7

我正在尝试制作一个自动更新 Google Plus 电子表格的应用程序。为了做到这一点,我必须设置gspread,这也需要 pyOpenSSL 才能工作。没有它,它会抛出这个错误:

CryptoUnavailableError:没有可用的加密库

使用pip,我输入命令:

pip install pyopenssl

并使用导入:

from OpenSSL import SSL

当我尝试运行代码时,我收到以下错误:

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

我尝试多次重新安装 pyOpenSSL,还尝试重新安装加密依赖项(以及尝试安装以前版本的 pyOpenSSL)。

这个问题记录了几次,但我没有尝试过的唯一解决方案是重新安装 python 或操作系统。

有什么建议么?提前致谢。

4

2 回答 2

2

祝你好运。在 Windows 上调试 ImportError 问题并不适合胆小的人。

即使ImportError指的是cryptography.hazmat.bindings.openssl.binding这个不一定是原始问题。无论出于何种原因,我经常会ImportError遇到另一个问题。

我会尝试的第一件事是跑步

python -v -c "from OpenSSL import SSL"

并捕获输出。寻找接近最终错误的任何问题。

它可能是以下之一:

  • cffi 无法编译绑定(预编译的绑定应该由 安装pip install,但有时东西会中断......)
  • 试图导入不可用的 SSL DLL 的绑定(但也应该通过 pip install 拉取,但我不太确定)
  • DLL 可用但不可加载,因为缺少某些依赖 DLL,例如 Visual Studio 运行时。

我的赌注是最后一点。唯一对我有帮助的是打开相关module.pydDependency Walker。很多时候,一些奇怪的问题(比如发现另一个具有错误架构的 DLL)会成为原因。

祝你好运!

于 2016-02-16T18:54:48.307 回答
-1

这就是我在我的 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 ..我认为不是,如果你已经安装了 pipapt-get你也可以使用pip install

同时,这是有关 pyOpenSSL 绑定的文档

这是一个“有害物质”模块。仅当您 100% 绝对确定您知道自己在做什么时才应该使用它,因为该模块充满了地雷、龙和带有激光枪的恐龙。

这是一个非常大胆的警告,我必须说

于 2016-02-10T05:53:38.753 回答