运行后pip install requests[security]
运行任何pip命令都会输出以下错误。我尝试过删除和重新安装python pip以及python pyopenssl。想知道是否有人有建议或遇到过这个问题?我不能升级python或Debian,我想让pip重新工作。
Debian 6.0.10
Python 2.6.6
python pip 1.5.6
$ pip --version
Traceback (most recent call last):
File "/usr/local/bin/pip", line 9, in <module>
load_entry_point('pip==1.5.6', 'console_scripts', 'pip')()
File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 305, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 2244, in load_entry_point
return ep.load()
File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 1954, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
File "/usr/local/lib/python2.6/dist-packages/pip-1.5.6-py2.6.egg/pip/__init__.py", line 11, in <module>
from pip.vcs import git, mercurial, subversion, bazaar # noqa
File "/usr/local/lib/python2.6/dist-packages/pip-1.5.6-py2.6.egg/pip/vcs/mercurial.py", line 9, in <module>
from pip.download import path_to_url
File "/usr/local/lib/python2.6/dist-packages/pip-1.5.6-py2.6.egg/pip/download.py", line 22, in <module>
from pip._vendor import requests, six
File "/usr/local/lib/python2.6/dist-packages/pip-1.5.6-py2.6.egg/pip/_vendor/requests/__init__.py", line 53, in <module>
from .packages.urllib3.contrib import pyopenssl
File "/usr/local/lib/python2.6/dist-packages/pip-1.5.6-py2.6.egg/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py", line 49, in <module>
from ndg.httpsclient.ssl_peer_verification import SUBJ_ALT_NAME_SUPPORT
File "/usr/local/lib/python2.6/dist-packages/ndg/httpsclient/ssl_peer_verification.py", line 14, in <module>
from ndg.httpsclient.subj_alt_name import SubjectAltName
File "/usr/local/lib/python2.6/dist-packages/ndg/httpsclient/subj_alt_name.py", line 102, in <module>
class AnotherName(univ.Sequence):
File "/usr/local/lib/python2.6/dist-packages/ndg/httpsclient/subj_alt_name.py", line 105, in AnotherName
namedtype.NamedType('value', univ.Any().subtype(
AttributeError: 'module' object has no attribute 'Any'
不幸的是,sudo apt-get autoremove
并没有神奇地删除。当然,我也尝试了标准的pip uninstall ndg-httpsclient
,但首先运气不佳。
最后,我不得不进入python程序目录并强行将其删除
$ cd usr/local/lib/python2.7/dist-packages
$ sudo rm -rf ndg_httpsclient-0.3.3-py2.7.egg-info
$ sudo rm -rf ndg_httpsclient-0.3.3-py2.7-nspkg.pth
$ sudo rm -rf ndg
只需执行以下操作即可解决此问题: sudo apt-get autoremove
请在此处引用此错误:https://github.com/cedadev/ndg_httpsclient/issues/5
我怀疑问题是Ubuntu上的pip使用的是ndg_httpsclient,而当前的ndg_httpsclient与旧的pyasn1,所以pip在安装过程中会断裂。
无论如何,可以选择的pyasn1的有效版本是:0.0.9a0,0.0.10a0、0.0.11a0、0.0.12a0、0.0.13a0、10.0.13b0、0.0.13、0.1.1、0.1.2、0.1.3、0.1.4、0.1.5、0.1.6、0.1.7、0.1.8、0.1.9
我找到了一个半合理的解决方法。
但是0.0.13没有安装在Python 3上,所以我认为最低应至少为0.1.1。
然而,我看到密码学需要pyasn1>=0.1.8,所以它是很可能大多数人很快就会使用它。