Python pip安装失败

4
我想安装一个名为pynput的库,使用sudo pip install pynput命令进行安装。但是我遇到了错误日志。这种情况不止发生在pynput库,其他python包也发生过。以前所有操作都很正常,突然出现这些错误。我试着从~/.pip/pip.log复制错误日志,以下是所得到的内容:
 Using version 1.4 (newest of versions: 1.4, 1.3.10, 1.3.9, 1.3.8.1, 1.3.7, 1.3.6, 1.3.5, 1.3.4, 1.3.3, 1.3.2, 1.3.1, 1.3, 1.2, 1.1.7, 1.1.6, 1.1.5, 1.1.4, 1.1.3, 1.1.2, 1.1.1, 1.1, 1.0.6, 1.0.5, 1.0.4, 1.0.3, 1.0.2, 1.0.1, 1.0, 0.6, 0.5.1, 0.5, 0.4, 0.3, 0.2)
Cleaning up...
  Removing temporary dir /tmp/pip_build_root...
Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 278, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1198, in prepare_files
    do_download,
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1376, in unpack_url
    self.session,
  File "/usr/lib/python2.7/dist-packages/pip/download.py", line 546, in unpack_http_url
    resp = session.get(target_url, stream=True)
  File "/usr/share/python-wheels/requests-2.2.1-py2.py3-none-any.whl/requests/sessions.py", line 467, in get
    return self.request('GET', url, **kwargs)
  File "/usr/lib/python2.7/dist-packages/pip/download.py", line 237, in request
    return super(PipSession, self).request(method, url, *args, **kwargs)
  File "/usr/share/python-wheels/requests-2.2.1-py2.py3-none-any.whl/requests/sessions.py", line 455, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/share/python-wheels/requests-2.2.1-py2.py3-none-any.whl/requests/sessions.py", line 558, in send
    r = adapter.send(request, **kwargs)
  File "/usr/share/python-wheels/requests-2.2.1-py2.py3-none-any.whl/requests/adapters.py", line 330, in send
    timeout=timeout
  File "/usr/share/python-wheels/urllib3-1.7.1-py2.py3-none-any.whl/urllib3/connectionpool.py", line 562, in urlopen
    body=body, headers=headers)
  File "/usr/share/python-wheels/urllib3-1.7.1-py2.py3-none-any.whl/urllib3/connectionpool.py", line 387, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/lib/python2.7/httplib.py", line 1017, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python2.7/httplib.py", line 1051, in _send_request
    self.endheaders(body)
  File "/usr/lib/python2.7/httplib.py", line 1013, in endheaders
    self._send_output(message_body)
  File "/usr/lib/python2.7/httplib.py", line 864, in _send_output
    self.send(msg)
  File "/usr/lib/python2.7/httplib.py", line 826, in send
    self.connect()
  File "/usr/share/python-wheels/urllib3-1.7.1-py2.py3-none-any.whl/urllib3/connectionpool.py", line 145, in connect
    match_hostname(self.sock.getpeercert(),
  File "/usr/share/python-wheels/urllib3-1.7.1-py2.py3-none-any.whl/urllib3/contrib/pyopenssl.py", line 313, in getpeercert
    for value in get_subj_alt_name(x509)
  File "/usr/share/python-wheels/urllib3-1.7.1-py2.py3-none-any.whl/urllib3/contrib/pyopenssl.py", line 94, in get_subj_alt_name
    asn1Spec=general_names)
  File "/usr/local/lib/python2.7/dist-packages/pyasn1/codec/ber/decoder.py", line 825, in __call__
    stGetValueDecoder, self, substrateFun
  File "/usr/local/lib/python2.7/dist-packages/pyasn1/codec/ber/decoder.py", line 391, in valueDecoder
    r.verifySizeSpec()
  File "/usr/local/lib/python2.7/dist-packages/pyasn1/type/base.py", line 252, in verifySizeSpec
    def verifySizeSpec(self): self._sizeSpec(self)
  File "/usr/local/lib/python2.7/dist-packages/pyasn1/type/constraint.py", line 32, in __call__
    '%s failed at: \"%s\"' % (self, sys.exc_info()[1])
ValueConstraintError: ConstraintsIntersection(ConstraintsIntersection(), ValueSizeConstraint(1, 64)) failed at: "ValueSizeConstraint(1, 64) failed at: "SubjectAltName().setComponents(GeneralName(componentType=NamedTypes(NamedType('otherName', AnotherName(componentType=NamedTypes(NamedType('type-id', ObjectIdentifier('<no value>')), NamedType('value', ...........

什么错误?你有研究过它的含义吗? - Ulrich Eckhardt
@UlrichEckhardt 我已经附上了错误日志,但是在谷歌上搜索时没有得到明确的结果。 - anekix
@anekix 你能解决那个问题吗?突然间我也遇到了同样的错误。 - Variant
@Variant 我还没有修复那个问题 :( - anekix
5个回答

5

这里也存在一个类似的问题。

问题似乎是因为PyPI证书现在有超过64个主题备用名称,破坏了旧版requests中硬编码的最大值。

请确保您拥有最新版本的requests和urllib3模块。


谢谢,但是当pip本身无法工作时,如何升级requests? - anekix
你可以尝试运行命令 "python -m pip install --upgrade pip setuptools wheel"。在 https://packaging.python.org/tutorials/installing-packages/ 上还有其他选项。 - OregonJim
在运行上述命令时,我遇到了相同的错误。我应该先升级 pip 还是 requests - anekix

2

您需要更新pip。只需输入以下命令:

curl  https://bootstrap.pypa.io/get-pip.py | sudo python

更新完 bash -l 后,就完成了。

1
我通过手动移除 requestsurllib,使其正常工作。

/usr/local/lib/python2.7/dist-packages

使用sudo easy_install requests重新安装requests库。

然后执行sudo easy_install pip==9.0.1命令。


这基本上就是我在回答中所说的。 :) - OregonJim
@OregonJim 谢谢你,我已经接受了你的答案并将其视为正确的答案。只是想添加使用 easy_install 的步骤 :) - anekix

0

尝试使用以下命令更新pip:

sudo -H pip2 install --upgrade pip

命令。


如果我尝试使用 sudo pip install --upgrade pip 命令,我会得到相同类别的错误。 - anekix
你尝试过上述命令吗?我们使用sudo -H设置主目录。 - Nipun Sampath
以上命令提示“您必须至少提供一个要安装的需求(参见“pip help install”)”,因此我尝试了“sudo -H pip2 install --upgrade pip”,但与我的问题中相同的错误。 - anekix
哦,抱歉!打错字了,是我的错。https://askubuntu.com/questions/712339/how-to-upgrade-pip-to-latest。你可以尝试这里列出的第二种方法吗? - Nipun Sampath
我尝试了你提供的链接,但是在错误日志中我仍然得到相同的错误。 - anekix

0

以下方案对我有效

  1. 卸载pip2
  2. 使用PyPI安装pip2(参考https://www.howtodojo.com/2016/03/install-use-pip-ubuntu-14-04/中的“从PyPI安装pip”部分) 注意:在我的情况下,从Ubuntu存储库安装失败。
  3. 之后,我再也没有在使用pip2安装任何模块时遇到ValueConstraintError错误(例如:pip2 install invoke)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接