Python “pip install ” is failing with AttributeErr

2019-01-30 18:27发布

问题:

$ sudo pip install --upgrade pyOpenSSL

Traceback (most recent call last):
  File "/usr/local/bin/pip", line 9, in <module>
load_entry_point('pip==8.1.1', '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/local/lib/python2.7/dist-packages/pip-8.1.1-
 py2.7.egg/pip/__init__.py", line 16, in <module>
from pip.vcs import git, mercurial, subversion, bazaar  # noqa
 File "/usr/local/lib/python2.7/dist-packages/pip-8.1.1-
 py2.7.egg/pip/vcs/mercurial.py", line 9, in <module>
from pip.download import path_to_url
File "/usr/local/lib/python2.7/dist-packages/pip-8.1.1-
py2.7.egg/pip/download.py", line 39, in <module>
from pip._vendor import requests, six
File "/usr/local/lib/python2.7/dist-packages/pip-8.1.1-
py2.7.egg/pip/_vendor/requests/__init__.py", line 53, in <module>
from .packages.urllib3.contrib import pyopenssl
File "/usr/local/lib/python2.7/dist-packages/pip-8.1.1-
  py2.7.egg/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py", 
line 
54, in <module>
 import OpenSSL.SSL
   File "/usr/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in 
  <module>
    from OpenSSL import rand, crypto, SSL
    File "/usr/lib/python2.7/dist-packages/OpenSSL/SSL.py", line 118, in 
<module>
 SSL_ST_INIT = _lib.SSL_ST_INIT
AttributeError: 'module' object has no attribute 'SSL_ST_INIT'

I am unable to Uninstall " pip uninstall pyopenssl "

Using pip gets me this error.

Thanks in advance.

Additional Details:

I am using

Distributor ID: Ubuntu Description: Ubuntu 15.10 Release: 15.10 Codename: wily

回答1:

I did the following which seemed to fix the error, not sure if it's the correct way, but it did fix the error on my machine:

I first backed up the directories below, recommend you do same.

rm -rf /usr/lib/python2.7/dist-packages/OpenSSL
rm -rf /usr/lib/python2.7/dist-packages/pyOpenSSL-0.15.1.egg-info
sudo pip install pyopenssl

I couldn't uninstall it because every time I ran pip I got the same error you did: 'module' object has no attribute 'SSL_ST_INIT'.

After the above my pip now works and more importantly my ansible now works (which was broken by my previous updates).

Not sure if it will work on your system, and removing things out of band, like I did, is risky at best, so as a warning, I would say, your mileage may vary with my kludgy fix, use caution!



回答2:

I ran into this issue as well. The solution proposed to run pip doesn't work because pip is broken too! I found this solved it for me:

sudo python -m easy_install --upgrade pyOpenSSL

This installed version 17.3.0 which was an upgrade to the (stock python-openssl on xenial) version ?0.15.1?. Note the massive change in version it could be they dropped the leading 0. in later versions.

Anyway, after that, pip and ansible started to work again.



回答3:

Upgrading pyOpenSSL to 16.2.0 fixes it.

pip uninstall pyOpenSSL
pip install pyOpenSSL==16.2.0

There is an issue with version compatibility.