ImportError:没有名为 cryptography.hazmat.bindings._openssl 的模块

Posted

技术标签:

【中文标题】ImportError:没有名为 cryptography.hazmat.bindings._openssl 的模块【英文标题】:ImportError: No module named cryptography.hazmat.bindings._openssl 【发布时间】:2015-12-07 17:15:44 【问题描述】:

CryptoUnavailableError: No crypto library available and from oauth2client import crypt failure.

我在链接中提到了上述错误。我能够通过重新安装 pyOpenSSL 和密码学来解决这个问题。但是现在出现以下错误。

ImportError: No module named cryptography.hazmat.bindings._openssl

这里的 _openssl 是一个 unix 可执行文件(_openssl.so)。以下是import语句

from cryptography.hazmat.bindings._openssl import ffi, lib

以上代码在密码学模块的 bindings.py 中。这些都与使用 oauth2client 的 gspread 身份验证相关联。请帮帮我。我正在为此苦苦挣扎。

更新: 该问题是由一些依赖失败引起的。我无法找到依赖项失败的地方。从顶部重新安装了所有库。这样就解决了问题。

【问题讨论】:

您找到解决方案了吗?我在这个问题和上一个问题中遇到了同样的问题。 我实际上重新安装了所有需要的库。此问题可能是由于依赖项中的某些错误引起的。 我也遇到了这个问题。有没有其他人找到方法?我刚刚重新安装了所有软件包。 【参考方案1】:

我终于明白了。它对我有用:

pip uninstall pyopenssl
pip uninstall cryptography
pip install pyopenssl
pip install cryptography

【讨论】:

【参考方案2】:

通过 venv 安装它为我修复了它:

/opt/eff.org/certbot/venv/local/bin/pip install cryptography interface

【讨论】:

这终于对我有用了。只需要使用 virtualenv pip 来安装所有缺少的依赖项。 (我的 Amazon Linux certbot-auto 已更新到 0.37.1,无法找到所有这些模块。)【参考方案3】:

我想为 Anaconda3 安装 Scrapy 时遇到了同样的问题。

我认为实际安装 Twisted 打破了这一点。由于这条消息,任何使用 pip/conda 的尝试都失败了。

我看到了上面zhangzhy2000的https://***.com/a/54389947/1137529的命题,但是我没有安装任何东西。

实际上发生了什么,曾经有 Python 模块来处理 SSL,但是 它被丢弃了。现在(在升级 Scrapy / Twisted 的一些依赖项之后)Anaconda 依赖操作系统来处理 SSL。

对于我所做的 Windows 10 64 位:

    我安装了 sasl-0.2.1-cp37-cp37m-win_amd64.whl(来自 https://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame)。这实际上对我没有帮助。

    我安装了 Win64OpenSSL-1_1_1b.exe - Open SSL(来自https://slproweb.com/products/Win32OpenSSL.html

    我运行 pip3 install pyopenssl==19.0.0 为我安装 pyopenssl 和加密。

(然后我安装了与此处无关的扭曲和刮擦)。

我想重申一下,对 SSL 的支持已从 Python 中删除,现在它依赖于操作系统,因此应安装特定于操作系统的 SSL 软件包。

【讨论】:

【参考方案4】:

另一种解决方法:

apk add --no-cache py-cryptography

感谢https://github.com/pyca/cryptography/issues/4264#issuecomment-392849235

【讨论】:

【参考方案5】:

我在 Mac 上的 virtualenv 中遇到了类似的问题。我听从了zhangzhy2000 的answer 的建议,但我还需要卸载并重新安装pyasn1

这给我留下了这些步骤

cd ~/.virtualenvs/my-virtual-env/bin
source activate
pip uninstall pyopenssl
pip uninstall cryptography
pip uninstall pyasn1
pip install pyopenssl
pip install cryptography
pip install pyasn1

【讨论】:

【参考方案6】:

您应该在项目的根路径中手动添加加密源。

https://github.com/pyca/cryptography/tree/master/src

【讨论】:

我的项目的根目录中已经有一个密码学源。我尝试了您提供的链接,但该来源没有 _openssl.so 或任何引发错误的此类文件。【参考方案7】:

这个问题是由一些依赖失败引起的。我无法找到依赖项失败的地方。从顶部重新安装了所有库。这样就解决了问题。

【讨论】:

【参考方案8】:

我也遇到过这个问题。首先我安装了OpenSSL,然后把include的OpenSSL文件夹的内容复制到Microsoft Visual C++ Compiler for Python 2.7\vc\include里面的编译器里面,内容为把lib拷贝到libs里面的Python安装目录,把opensll环境变量调整为git,执行openssl里面的cmd的时候应该定位到OpenSSL的安装目录。再次卸载cryptography,然后重新安装,我的问题解决了!!

【讨论】:

【参考方案9】:

我下载文件 cryptography-2.0.3-cp36-cp36m-win_amd64.whl

然后运行:

pip install C:/User/Download/cryptography-2.0.3-cp36-cp36m-win_amd64.whl

然后就解决了。

【讨论】:

【参考方案10】:

这对我有用,否则 zope 和密码学一直显示安装相互依赖导致死锁

sudo /opt/eff.org/certbot/venv/local/bin/pip install cryptography interface zope

通过https://github.com/certbot/certbot/issues/2544#issuecomment-505196160

【讨论】:

【参考方案11】:

只需转到/opt/eff.org/certbot/venv/local/lib64/python2.7 并在同一文件夹中创建dist-packagessite-packages 的链接。如果site-packages 已经在这里,您需要重命名它。 喜欢

    rm -rf site-packages ln -s dist-packages site-packages

【讨论】:

【参考方案12】:

这个答案可能看起来很蹩脚,但这对我来说是有效的。我实际上重新安装了操作系统。这样它就删除了我之前安装的所有其他库。其中一个库可能是罪魁祸首,它干扰了加密文件和 openssl。我无法追溯导致上述错误的模块/库。 重新安装操作系统后,我继续使用您在遇到此错误之前可能已经完成的链接安装 cyptography、openssl。

在按照我的方式进行之前,请确保 Six.py 在 /Library/Python/2.7/site-packages 和 /System/Library/Frameworks/Python.framework/Versions/2.7/ 中都具有 1.9.0 版本额外/lib/python

就算你走我的路,也照着做。

我太绝望了,我重新安装了操作系统。我做出这个决定是因为生产中的相同代码在开发中不起作用。我理解它的一些依赖错误。

【讨论】:

我不认为“重新安装操作系统”可以成为任何问题的公认答案。好的,也许是一个 Windows 更新错误问题。

以上是关于ImportError:没有名为 cryptography.hazmat.bindings._openssl 的模块的主要内容,如果未能解决你的问题,请参考以下文章

ImportError:没有名为枚举的模块

ImportError:没有名为“appdirs”的模块

ImportError:没有名为 websocket 的模块

ImportError:没有名为“backports”的模块

ImportError:没有名为 ghostscript 的模块

ImportError:运行火花时没有名为请求的模块