【发布时间】:2018-10-12 20:07:56
【问题描述】:
我的环境中有 pip2 和 pip3。
pip 1.5.4 从 /usr/lib/python2.7/dist-packages (python 2.7)
来自 /usr/local/lib/python3.4/dist-packages/pip (python 3.4) 的 pip 18.0
Python 2.7.6
Python 3.4.3
这是我尝试安装(尝试安装 geopy:pip2 install geopy)或使用 pip2 升级任何软件包时得到的结果:
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(Na
medType('type-id', ObjectIdentifier('<no value>')), NamedType('value', Any(tagSet=TagSet((), Tag(tagClass=128, tagFormat=32, tagId=0))))), ta
gSet=TagSet((), Tag(tagClass=128, tagFormat=32, tagId=0)))), NamedType('rfc822Name', IA5String(tagSet=TagSet((), Tag(tagClass=128, tagFormat=
0, tagId=1)))), NamedType('dNSName', IA5String(tagSet=TagSet((), Tag(tagClass=128, tagFormat=0, tagId=2)))), NamedType('directoryName', Name(
componentType=NamedTypes(NamedType('', RDNSequence())), tagSet=TagSet[...]
完整日志here(对要点抱歉)。
我无法升级 pip2(出现与上述相同的错误)。我也无法卸载 pip2,因为 pip2 卸载 pip 返回
不卸载操作系统拥有的 /usr/lib/python2.7/dist-packages 中的 pip
从源代码 (python setup.py install) 安装包也不起作用:
geopy 设置命令中的错误:“extras_require”必须是一个字典,其值是包含有效项目/版本要求说明符的字符串或字符串列表。
我认为这是因为未满足 setuptools 的版本(并且我无法通过 pip 升级它,如上所述)。请给我建议一个摆脱这个混乱的方法。
【问题讨论】:
-
你正在执行的命令是
pip2 install geopy?如果不是,请指定您使用的确切命令。 -
很遗憾,
pip和python2版本都太旧了(你还在运行 Ubuntu 14.04 吗?两年前就已经 EOL 了)。即使您设法通过例如绕过pip错误。下载较新的轮子并将其安装在本地,例如通过pip2 install --user path/to/pip-18.1-py2-any.whl并将$HOME/.local/bin附加到PATH,您仍然无法从PyPI 安装任何东西,直到您将python2更新到至少2.7.7,因为this。 Python 2.7.6 是针对不支持 TLSv1.2 的 OpenSSL 0.9.8 构建的。 -
setup.py install方法将不起作用,因为您似乎有一个古老版本的setuptools,它不支持需求中的环境标记。 -
您可以尝试下载
setuptools和pip的轮子并仅为您的用户安装它们:pip2 install --user path/to/file.whl。然后下载geopy和geographiclib以及更新的pip3:pip3 download "geographiclib>=1.49,<2"和pip3 download geopy --python-version 2 --only-binary=:all: --no-deps。现在您可以尝试使用本地pip2安装:$HOME/.local/bin/pip2 install --user path/to/geographiclib-1.49.tar.gz然后$HOME/.local/bin/pip2 install --user path/to/geopy-1.17.0-py2.py3-none-any.whl。 -
在我的公司,我们有一些系统仍在运行 python2.6(由于大客户不想升级......)。为了让事情顺利进行,我们从this 创建了一个新的虚拟环境(直到15.2.0,它仍然支持python2.6),我们小心地指定
--no-setuptools --no-pip --no-wheel并安装setuptools、pip和@ 987654351@手动指定支持python2.6的最新版本。似乎如果你想继续使用那个过时的 python 2.7,你将不得不做类似的事情......
标签: python python-3.x python-2.7 pip