【问题标题】:ImportError: No module named cryptography.hazmat.bindings._opensslImportError:没有名为 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 身份验证相关联。请帮帮我。我正在为此苦苦挣扎。

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

【问题讨论】:

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

标签: python-2.7 google-app-engine authentication oauth-2.0 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 的尝试都失败了。

    我看到了上面zhangzhy2000https://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 和加密。

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

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

    【讨论】:

      【解决方案4】:

      另一种解决方法:

      apk add --no-cache py-cryptography
      

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

      【讨论】:

        【解决方案5】:

        我在 Mac 上的 virtualenv 中遇到了类似的问题。我听从了zhangzhy2000answer 的建议,但我还需要卸载并重新安装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 已经在这里,您需要重命名它。 喜欢

                  1. rm -rf site-packages
                  2. 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 更新错误问题。
                    猜你喜欢
                    • 2019-06-02
                    • 2019-07-21
                    • 2013-03-11
                    • 1970-01-01
                    • 2012-12-07
                    • 2012-05-23
                    • 2019-07-29
                    • 2015-07-04
                    • 2014-03-15
                    相关资源
                    最近更新 更多