我正在尝试制作一个自动更新Google Plus电子表格的应用程序。为了做到这一点,我不得不设置gspread
,这也需要pyOpenSSL才能工作。没有它,它会抛出此错误:
CryptoUnavailableError:没有可用的加密库
使用pip
,我输入命令:
pip install pyopenssl
并导入使用:
from OpenSSL import SSL
当我尝试运行代码时,收到以下错误:
ImportError:没有名为cryptography.hazmat.bindings.openssl.binding的模块
我已经尝试多次重新安装pyOpenSSL,并尝试重新安装加密依赖项(以及尝试安装以前版本的pyOpenSSL)。
这个问题记录了几次,但我没有尝试的唯一解决方案是重新安装python或操作系统。
有什么建议?提前致谢。
祝你好运。在Windows上调试ImportError问题并不适合胆小的人。
即使ImportError
指的是cryptography.hazmat.bindings.openssl.binding
,这不一定是原始问题。无论出于何种原因,我经常让ImportError
影响另一个问题。
我要尝试的第一件事就是跑步
python -v -c "from OpenSSL import SSL"
并捕获输出。查找接近最终错误的任何问题。
它可能是以下之一:
pip install
安装,但有时会破坏...)我的赌注是最后一点。唯一能帮助我的是用module.pyd
打开相关的Dependency Walker。通常情况下,一些奇怪的问题(比如使用错误的架构找到另一个DLL)通常会成为原因。
祝好运!
这就是我在Ubuntu桌面上解决它的方法。在Windows中你需要找出解决方案,但在Linux和Windows中这个问题的真正原因是相同的
PyOpenSSL 14.x +使用基于cffi的加密包,也许这是你的问题的原因--cffi需要libffi(或libffi-dev)系统包,这是一个新的非Python依赖。
首先这样做
sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
然后
pip install cryptography
注意这里的关键模块是libffi-dev ..我认为如果你已经安装了pip,你也可以使用apt-get
而不是pip install
与此同时,这是关于pyOpenSSL绑定的文档
这是一个“危险材料”模块。你应该只使用它,如果你100%绝对确定你知道你在做什么,因为这个模块充满了地雷,龙和带激光枪的恐龙。
我必须说,这是一个非常大胆的警告