【问题标题】:Correctly installing pyOpenSSL for Python (Windows)正确安装 pyOpenSSL for Python (Windows)
【发布时间】:2016-05-15 21:56:33
【问题描述】:

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

CryptoUnavailableError:没有可用的加密库

使用pip,我输入命令:

pip install pyopenssl

并使用以下方式导入:

from OpenSSL import SSL

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

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

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

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

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

【问题讨论】:

    标签: python windows openssl installation gspread


    【解决方案1】:

    祝你好运。在 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 运行时。

    我赌的是最后一点。唯一对我有帮助的是用Dependency Walker 打开相关的module.pyd。原因往往是一些奇怪的问题(比如发现另一个具有错误架构的 DLL)。

    祝你好运!

    【讨论】:

      【解决方案2】:

      这就是我在我的 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% 绝对确定你知道自己在做什么,因为 这个模块充满了地雷、龙和带有激光的恐龙 枪。

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

      【讨论】:

      • 这对于 Python 3 的外观如何?
      猜你喜欢
      • 2012-02-27
      • 2014-03-20
      • 2023-03-21
      • 2011-07-13
      • 2015-03-06
      • 2017-03-15
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多