安装请求[security]后Pip断开



运行后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,所以它是很可能大多数人很快就会使用它。

最新更新