20

CryptoUnavailableError:没有可用的加密库并且从 oauth2client 导入加密失败。

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

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

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

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

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

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

4

12 回答 12

21

我终于得到了这个。它对我有用:

pip uninstall pyopenssl
pip uninstall cryptography
pip install pyopenssl
pip install cryptography
于 2019-01-27T15:49:33.250 回答
3

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

/opt/eff.org/certbot/venv/local/bin/pip install cryptography interface
于 2018-11-05T11:38:11.180 回答
1

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

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

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

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

对于我所做的 Windows 10 64 位:

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

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

  3. 我为我运行pip3 install pyopenssl==19.0.0安装 pyopenssl 和密码学。

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

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

于 2019-04-22T09:18:59.467 回答
1

另一种解决方法:

apk add --no-cache py-cryptography

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

于 2020-04-06T18:28:09.920 回答
1

我在 Mac 上的 virtualenv 中遇到了类似的问题。我按照zhangzhy2000的答案的建议,但我也需要卸载并重新安装。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
于 2021-03-25T19:12:34.503 回答
0

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

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

于 2015-09-11T09:00:53.280 回答
0

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

于 2015-09-22T12:21:40.770 回答
0

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

于 2016-12-29T08:56:23.313 回答
0

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

并运行:

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

然后它解决了。

于 2017-09-01T02:10:12.900 回答
0

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

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

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

于 2020-12-22T11:40:24.877 回答
0

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

  1. rm -rf site-packages
  2. ln -s dist-packages site-packages
于 2019-01-09T06:44:00.897 回答
-2

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

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

即使你通过我的方式,也请执行上述操作。

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

于 2015-09-23T07:07:11.600 回答