Python无法运行或重新安装Pip

时间:2016-05-10 17:41:51

标签: python python-3.x python-3.4

我有一台安装了Python 2.7和Python 3.4的机器。通常要在Python 3.4下安装软件包,我会运行DummyEnum

但现在当我跑pip3 install [PACKAGE]时,我得到了

pip3

即使我下载Traceback (most recent call last): File "/volume1/@appstore/python3/bin/pip3", line 7, in <module> from pip import main File "/usr/local/python3/lib/python3.4/site-packages/pip/__init__.py", line 16, in <module> from pip.vcs import git, mercurial, subversion, bazaar # noqa File "/usr/local/python3/lib/python3.4/site-packages/pip/vcs/subversion.py", line 9, in <module> from pip.index import Link File "/usr/local/python3/lib/python3.4/site-packages/pip/index.py", line 30, in <module> from pip.wheel import Wheel, wheel_ext File "/usr/local/python3/lib/python3.4/site-packages/pip/wheel.py", line 32, in <module> from pip import pep425tags File "/usr/local/python3/lib/python3.4/site-packages/pip/pep425tags.py", line 335, in <module> supported_tags = get_supported() File "/usr/local/python3/lib/python3.4/site-packages/pip/pep425tags.py", line 307, in get_supported elif is_manylinux1_compatible(): File "/usr/local/python3/lib/python3.4/site-packages/pip/pep425tags.py", line 163, in is_manylinux1_compatible return have_compatible_glibc(2, 5) File "/usr/local/python3/lib/python3.4/site-packages/pip/pep425tags.py", line 187, in have_compatible_glibc version = [int(piece) for piece in version_str.split(".")] File "/usr/local/python3/lib/python3.4/site-packages/pip/pep425tags.py", line 187, in <listcomp> version = [int(piece) for piece in version_str.split(".")] ValueError: invalid literal for int() with base 10: '20-2014' 并运行get-pip.py,我也会遇到同样的错误。

问题是什么?

编辑:显然,在安装DSM 6.0时,这是Synology安装中持续存在的问题。

1 个答案:

答案 0 :(得分:0)

在上面的评论中找到@Tadhg提供的解决方案。

Here是指向pep425tags.py的必要更改的链接。

但是,这个SO页面上的所有人都需要进行更改。

添加以下功能:

# Separated out from have_compatible_glibc for easier unit testing
def check_glibc_version(version_str, needed_major, needed_minor):
    # Parse string and check against requested version.
    #
    # We use a regexp instead of str.split because we want to discard any
    # random junk that might come after the minor version -- this might happen
    # in patched/forked versions of glibc (e.g. Linaro's version of glibc
    # uses version strings like "2.20-2014.11"). See gh-3588.
    m = re.match(r"(?P<major>[0-9]+)\.(?P<minor>[0-9]+)", version_str)
    if not m:
        warnings.warn("Expected glibc version with 2 components major.minor,"
                      " got: %s" % version_str, RuntimeWarning)
        return False
    return (int(m.group("major")) == needed_major and
            int(m.group("minor")) >= needed_minor)

并替换

# Parse string and check against requested version.
version = [int(piece) for piece in version_str.split(".")]
if len(version) < 2:
    warnings.warn("Expected glibc version with 2 components major.minor,"
                  " got: %s" % version_str, RuntimeWarning)
    return False
return version[0] == major and version[1] >= minimum_minor

return check_glibc_version(version_str, major, minimum_minor)