【问题标题】:How to upgrade/install a package without pip如何在没有 pip 的情况下升级/安装软件包
【发布时间】: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?如果不是,请指定您使用的确切命令。
  • 很遗憾,pippython2 版本都太旧了(你还在运行 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,它不支持需求中的环境标记。
  • 您可以尝试下载setuptoolspip 的轮子并仅为您的用户安装它们:pip2 install --user path/to/file.whl。然后下载geopygeographiclib 以及更新的pip3pip3 download "geographiclib&gt;=1.49,&lt;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 并安装setuptoolspip 和@ 987654351@手动指定支持python2.6的最新版本。似乎如果你想继续使用那个过时的 python 2.7,你将不得不做类似的事情......

标签: python python-3.x python-2.7 pip


【解决方案1】:

尝试从https://pypi.org/project/geopy/ 下载geopy 包 并运行

python setup.py install

【讨论】:

    猜你喜欢
    • 2021-10-05
    • 1970-01-01
    • 2021-08-11
    • 2020-07-31
    • 2017-05-14
    • 2018-10-12
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多