【问题标题】:Pip Error : 'module' object has no attribute 'Cryptography_HAS_SSL_ST'Pip 错误:“模块”对象没有属性“Cryptography_HAS_SSL_ST”
【发布时间】:2017-04-27 09:42:13
【问题描述】:

我尝试从 pip 安装并不断收到类似类型的错误。

$ pip install quandl
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    load_entry_point('pip==1.5.6', 'console_scripts', 'pip')()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 558, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2682, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2355, in load
    return self.resolve()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2361, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 74, in <module>
    from pip.vcs import git, mercurial, subversion, bazaar  # noqa
  File "/usr/lib/python2.7/dist-packages/pip/vcs/mercurial.py", line 9, in <module>
    from pip.download import path_to_url
  File "/usr/lib/python2.7/dist-packages/pip/download.py", line 22, in <module>
    import requests, six
  File "/usr/lib/python2.7/dist-packages/requests/__init__.py", line 53, in <module>
    from .packages.urllib3.contrib import pyopenssl
  File "/usr/lib/python2.7/dist-packages/urllib3/contrib/pyopenssl.py", line 53, in <module>
    import OpenSSL.SSL
  File "/home/ubuntu/.local/lib/python2.7/site-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import rand, crypto, SSL
  File "/home/ubuntu/.local/lib/python2.7/site-packages/OpenSSL/SSL.py", line 112, in <module>
    if _lib.Cryptography_HAS_SSL_ST:
AttributeError: 'module' object has no attribute 'Cryptography_HAS_SSL_ST'

现在,即使我尝试安装不同的 pip 模块,我也遇到了同样的错误。有什么解决方案吗?这是由于在下载 pip 模块时进程意外终止所致。

请帮助我完成纠正此错误的必要步骤。

我尝试安装这个

$ pip install -U cryptography
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    load_entry_point('pip==1.5.6', 'console_scripts', 'pip')()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 558, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2682, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2355, in load
    return self.resolve()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2361, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 74, in <module>
    from pip.vcs import git, mercurial, subversion, bazaar  # noqa
  File "/usr/lib/python2.7/dist-packages/pip/vcs/mercurial.py", line 9, in <module>
    from pip.download import path_to_url
  File "/usr/lib/python2.7/dist-packages/pip/download.py", line 22, in <module>
    import requests, six
  File "/usr/lib/python2.7/dist-packages/requests/__init__.py", line 53, in <module>
    from .packages.urllib3.contrib import pyopenssl
  File "/usr/lib/python2.7/dist-packages/urllib3/contrib/pyopenssl.py", line 53, in <module>
    import OpenSSL.SSL
  File "/home/ubuntu/.local/lib/python2.7/site-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import rand, crypto, SSL
  File "/home/ubuntu/.local/lib/python2.7/site-packages/OpenSSL/SSL.py", line 112, in <module>
    if _lib.Cryptography_HAS_SSL_ST:
AttributeError: 'module' object has no attribute 'Cryptography_HAS_SSL_ST'

【问题讨论】:

  • 你应该试试:pip install -U cryptography
  • 即使安装了密码系统也会出现同样的错误。
  • 似乎缺少与 SSL 相关的内容。您可能应该升级您的 pip(永远不知道): pip install --upgrade pip 然后尝试使用 pip install pyOpenSSL 来 pip OpenSSL
  • @FlorianJOUFFREAU 即使升级 pip 也显示相同的错误。
  • 卸载 pip 并重新安装。 sudo apt-get purge python-pip

标签: python linux ubuntu openssl pip


【解决方案1】:

这里是 Ubuntu 16.04.3:

我想我已经通过删除 python-openssl 包(及其依赖项)解决了这个问题:

apt-get --auto-remove remove python-openssl

然后用 pip 安装最新版本:

pip install pyOpenSSL

当然,如果你安装另一个依赖它的 apt 包,它会将它拉回来。我希望你从现在开始使用 pip 代替 apt 来做所有事情,应该没问题。

编辑:截至 2019 年 1 月,此问题似乎不再存在。

【讨论】:

  • 谢谢,但我需要做pip install pyopenssl
  • 同样在 Ubuntu 16.04.3 上:apt-get --auto-remove --yes remove python-openssl 删除了很多依赖包!包括landscape-commonpython-qt4oneconf。发出此命令后,我不得不重新安装它们:apt install landscape-common python-qt4 oneconf,最后是pip install pyopenssl
  • @M-Jack 也许不使用 --auto-remove 会更好?
  • 不确定...我只尝试了您的解决方案。但重新安装已删除的软件包可能很重要。
  • 告诉人们运行一个删除许多其他包所依赖的包的命令可能不是一个好主意,尤其是带有自动确认的标志!这最终从我的系统中删除了 700 多个包...
【解决方案2】:

如果连 pip 都不起作用,请尝试以下操作:

sudo easy_install -U cffi
sudo easy_install -U cryptography

它对我有用。

【讨论】:

    【解决方案3】:

    尝试执行以下操作:

    $ rm -rf /home/ubuntu/.local/lib/python2.7/site-packages/OpenSSL
    $ rm -rf /home/ubuntu/.local/lib/python2.7/site-packages/pyOpenSSL-0.15.1.egg-info
    

    在最后一行,您可能有另一个版本的 pyOpenSSL,请指定您的。

    【讨论】:

      【解决方案4】:

      我收到此错误并通过执行以下步骤解决了它(不要忘记输入您自己的用户名):

      rm -rf /home/<Your Username>/.local/lib/python2.7/site-packages/OpenSSL
      sudo rm -rf usr/local/lib/python2.7/dist-packages/OpenSSL/
      pip install pyOpenSSL
      

      【讨论】:

        【解决方案5】:

        在 RHEL/CentOS 上修复它:

        sudo rm -rf /usr/lib/python2.7/site-packages/OpenSSL/
        sudo yum install pyOpenSSL
        

        这是在 CentOS 7 上为我完成的。干杯!

        【讨论】:

          【解决方案6】:

          快速修复

          将 OpenSSL 文件夹移动到 OpenSSLBAK(例如)以避免错误

          # cd /usr/lib/python2.7/dist-packages
          # mv OpenSSL OpenSSLBAK
          

          应该不错

          【讨论】:

            【解决方案7】:

            我能够通过删除 openssl python 库并重新安装来解决此问题(安装前清除不起作用):

            $ sudo rm -rf /usr/local/lib/python2.7/dist-packages/OpenSSL/
            $ sudo apt install --reinstall python-openssl
            

            【讨论】:

            • 不幸的是,它对我不起作用。重新安装后返回相同的错误。我在 Ubuntu 16.04.3
            • @AsfandQazi 您应该确认这是您正在使用的 python 以及其他 lib 安装方法的潜在位置。 python -c 'import sys; print(sys.path)' 会让你知道去哪里找。
            【解决方案8】:

            尝试从here 下载合适的wheel 文件,具体取决于您的操作系统和python 版本。然后将此文件添加到 Python/Scripts 并使用下面的代码进行安装。

            pip install nameofwheelfile.whl
            

            wheel 文件包含所有依赖项。

            【讨论】:

            • 问题不仅仅针对特定模块,我可以使用这种方法。但真正的问题是它不适用于任何模块。即使我输入pip,它也会产生相同的结果。
            • 好的。如果您以 sudo 用户身份尝试,您是否也会遇到同样的错误?
            • YES 同样的结果
            • 嗯..你试过upgrade pip吗?
            • 该链接适用于 windows python 库,问题标记为linuxubuntu,因此无济于事。
            【解决方案9】:

            尝试重新安装python,它会解决你的许多问题,这样做

            sudo apt-get install --reinstall python2.7
            

            重新安装后pip会丢失,做

            sudo apt-get install python-pip
            

            【讨论】:

            • /usr/lib/python2.7/site-packages/ 有多少个pip 目录??
            • 不管怎样,去我上面提到的路径,手动删除你找到的任何pip目录然后再​​python get-pip.py
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-05-23
            • 1970-01-01
            • 2016-09-29
            • 2011-10-26
            • 1970-01-01
            相关资源
            最近更新 更多