Pip: 升级到 20.0 后无法使用 pip 安装任何东西

创建于 2020-01-21  ·  94评论  ·  资料来源: pypa/pip

环境

  • 点子版本:20.0
  • Python版本:3.6.8
  • 操作系统:Ubuntu 14.04.6(不要评判)

描述

在我们的构建过程中,我们会自动升级到 pip 上的最新版本。 升级到 20.0 后(使用 pip install -U pip setuptools),我们无法安装任何软件包。

输出

Traceback (most recent call last):
  File "/home/svc-web/webshop/env/bin/pip", line 8, in <module>
    sys.exit(main())
  File "/home/svc-web/webshop/env/lib/python3.6/site-packages/pip/_internal/cli/main.py", line 73, in main
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
  File "/home/svc-web/webshop/env/lib/python3.6/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/svc-web/webshop/env/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 24, in <module>
    from pip._internal.cli.req_command import RequirementCommand
  File "/home/svc-web/webshop/env/lib/python3.6/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/home/svc-web/webshop/env/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
    from pip._internal.distributions import (
  File "/home/svc-web/webshop/env/lib/python3.6/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution'

最有用的评论

值得一提的是,所有项目都会发生错误、问题和意外事故,无论您如何计划并尝试减轻此类事件。

志愿者Pythonistas 提供一个想法和支持性评论,他们正在研究这个问题并为我们的所有利益进行修复。

所有94条评论

我看到同样的事情:

$ pip install requests
Traceback (most recent call last):
  File "/home/ntoll/.virtualenvs/sdclient/bin/pip", line 8, in <module>
    sys.exit(main())
  File "/home/ntoll/.virtualenvs/sdclient/lib/python3.7/site-packages/pip/_internal/cli/main.py", line 73, in main
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
  File "/home/ntoll/.virtualenvs/sdclient/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/home/ntoll/.virtualenvs/sdclient/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/ntoll/.virtualenvs/sdclient/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 24, in <module>
    from pip._internal.cli.req_command import RequirementCommand
  File "/home/ntoll/.virtualenvs/sdclient/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/home/ntoll/.virtualenvs/sdclient/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
    from pip._internal.distributions import (
  File "/home/ntoll/.virtualenvs/sdclient/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/home/ntoll/.virtualenvs/sdclient/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)

Ubuntu 18.04 上的 Python 3.7.2

同样在这里https://github.com/pypa/pip/pull/7619#issuecomment -576649700

看起来像不干净的区域。

与 Fedora 29 上的 Python 3.7.5 完全相同。在 virtualenvs 和--user中都会发生同样的情况。 另外,如果我运行pip3.7python3.7 -m pip也没关系。

正如@ntoll在下面建议的那样,感谢所有努力解决这个不幸故障的人! 很高兴在这里看到中立和支持的评论。 开源社区处于最佳状态。

同样在这里,android 9 termux 上的 python 3.8.1。 我认为基本上每个人都一样

我在 docker build 中遇到了同样的问题,使用python:3.8-buster图像:

Step 1/6 : FROM python:3.8-buster
 ---> 0a3a95c81a2b
Step 2/6 : ADD . /app
 ---> a3be40376bd8
Step 3/6 : WORKDIR /app
 ---> Running in 6f53960d3257
Removing intermediate container 6f53960d3257
 ---> 14b7a3ccf004
Step 4/6 : RUN pip install --upgrade pip setuptools
 ---> Running in 6f9dfc84e0a3
Collecting pip
  Downloading https://files.pythonhosted.org/packages/60/65/16487a7c4e0f95bb3fc89c2e377be331fd496b7a9b08fd3077de7f3ae2cf/pip-20.0-py2.py3-none-any.whl (1.5MB)
Collecting setuptools
  Downloading https://files.pythonhosted.org/packages/a7/c5/6c1acea1b4ea88b86b03280f3fde1efa04fefecd4e7d2af13e602661cde4/setuptools-45.1.0-py3-none-any.whl (583kB)
Installing collected packages: pip, setuptools
  Found existing installation: pip 19.3.1
    Uninstalling pip-19.3.1:
      Successfully uninstalled pip-19.3.1
  Found existing installation: setuptools 41.6.0
    Uninstalling setuptools-41.6.0:
      Successfully uninstalled setuptools-41.6.0
Successfully installed pip-20.0 setuptools-45.1.0
Removing intermediate container 6f9dfc84e0a3
 ---> 4db4dd1c01a1
Step 5/6 : RUN pip install -r requirements.txt
 ---> Running in 01e0b70d0d81
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.8/site-packages/pip/_internal/cli/main.py", line 73, in main
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
  File "/usr/local/lib/python3.8/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/usr/local/lib/python3.8/site-packages/pip/_internal/commands/install.py", line 24, in <module>
    from pip._internal.cli.req_command import RequirementCommand
  File "/usr/local/lib/python3.8/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/usr/local/lib/python3.8/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
    from pip._internal.distributions import (
  File "/usr/local/lib/python3.8/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/usr/local/lib/python3.8/site-packages/pip/_internal/distributions/source/__init__.py)

同样在这里。 在 Docker 上使用 Ubuntu 18.04 和 Alpine linux 的 Python 3.7.4。

在 macOS 上的 MacPorts Python 上相同:

$ rm -rf venv && python3.8 -m venv venv && ./venv/bin/python -m pip install -U pip && ./venv/bin/python -m pip install requests
Collecting pip
  Using cached https://files.pythonhosted.org/packages/60/65/16487a7c4e0f95bb3fc89c2e377be331fd496b7a9b08fd3077de7f3ae2cf/pip-20.0-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 19.2.3
    Uninstalling pip-19.2.3:
      Successfully uninstalled pip-19.2.3
Successfully installed pip-20.0
Traceback (most recent call last):
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/runpy.py", line 193, in _run_module_as_main
    return _run_code(code, main_globals, None,
  ...
  File "/Users/messa/test/venv/lib/python3.8/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
    from pip._internal.distributions import (
  File "/Users/messa/test/venv/lib/python3.8/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/Users/messa/test/venv/lib/python3.8/site-packages/pip/_internal/distributions/source/__init__.py)

完全相同的问题。 Python 3.7.6,系统:Mac OS Catalina

Python 3.7.3 上的相同问题是 Ubuntu 19.04 默认的。

值得一提的是,所有项目都会发生错误、问题和意外事故,无论您如何计划并尝试减轻此类事件。

志愿者Pythonistas 提供一个想法和支持性评论,他们正在研究这个问题并为我们的所有利益进行修复。

请注意pip的维护者,但我想我们有两个选择可以继续前进:1)切断干净的 dist 并升级版本; 2)至少从pypi中拉出20(可能已经太晚了)。

同时,如果您使用virtualenv ,这可能会有所帮助:

virtualenv venv --no-pip
source venv/bin/activate
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py pip==19.3.1

只是想插话我们的构建系统也因此而崩溃。 幸运的是,它并不重要,我同意@ntoll的观点,有时事情会向南发展,我相信你正在尽你所能来解决这个问题。

@pradyunsg我确认了这个问题。 我建议从 PyPI 中提取它。

@xdralex是的:+1:我只是在输入类似的内容。

另外,如果你的全局环境中有一个可用的pip ,那么virtualenv venv --no-download将使用那个而不是下载损坏的版本。

仅出于完整性考虑:Windows 也会受到影响。 Win10 + Python 3.7.4 这里(WinPython):

python -m pip uninstall pip Traceback (most recent call last): File "v:\bin\scripting\python\3.7.4\python-3.7.4.amd64\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "v:\bin\scripting\python\3.7.4\python-3.7.4.amd64\lib\runpy.py", line 85, in _run_code exec(code, run_globals) File "v:\bin\scripting\python\3.7.4\python-3.7.4.amd64\lib\site-packages\pip\__main__.py", line 19, in <module> sys.exit(_main()) File "v:\bin\scripting\python\3.7.4\python-3.7.4.amd64\lib\site-packages\pip\_internal\cli\main.py", line 73, in main command = create_command(cmd_name, isolated=("--isolated" in cmd_args)) File "v:\bin\scripting\python\3.7.4\python-3.7.4.amd64\lib\site-packages\pip\_internal\commands\__init__.py", line 96, in create_command module = importlib.import_module(module_path) File "v:\bin\scripting\python\3.7.4\python-3.7.4.amd64\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1006, in _gcd_import File "<frozen importlib._bootstrap>", line 983, in _find_and_load File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 677, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 728, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "v:\bin\scripting\python\3.7.4\python-3.7.4.amd64\lib\site-packages\pip\_internal\commands\uninstall.py", line 9, in <module> from pip._internal.cli.req_command import SessionCommandMixin File "v:\bin\scripting\python\3.7.4\python-3.7.4.amd64\lib\site-packages\pip\_internal\cli\req_command.py", line 20, in <module> from pip._internal.operations.prepare import RequirementPreparer File "v:\bin\scripting\python\3.7.4\python-3.7.4.amd64\lib\site-packages\pip\_internal\operations\prepare.py", line 16, in <module> from pip._internal.distributions import ( File "v:\bin\scripting\python\3.7.4\python-3.7.4.amd64\lib\site-packages\pip\_internal\distributions\__init__.py", line 1, in <module> from pip._internal.distributions.source import SourceDistribution ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (v:\bin\scripting\python\3.7.4\python-3.7.4.amd64\lib\site-packages\pip\_internal\distributions\source\__init__.py)

安装 20.0 后似乎会影响任何pippython -m pip命令。 所以,我也无法恢复到 19.3。

编辑:此解决方法有所帮助。

对于那些构建过程中断的人,因为他们做的事情类似于 OP 的pip install -U pip setuptools - 请记住,您可以调整它以禁止或限制任何特定版本。

这两种方法在本地对我来说似乎都可以:

$ pip install -U "pip<20" setuptools
$ pip install -U "pip!=20.0" setuptools

pip会警告您不是最新版本,但不会安装v20.0

@james-gonzalez 不确定切断新版本是 CI 的一部分。

阅读https://pip.pypa.io/en/latest/development/release-process/#creating -a-new-release,也许在签出master之后应该应用 git clean。

我在运行最新 Ubuntu 和最新 Arch Linux 的干净 docker 容器中遇到了完全相同的问题。

我尝试在新的 virtualenv 中下载并运行 get-pip,但它仍然无法正常工作:/
我注意到在pip/_internal/distributions/文件夹中有一个名为source.py的 python 文件和一个名为source的文件夹。 刚才我手动删除了文件夹并且 pip 再次运行

让 pip 再次工作的解决方法是获取get-pip.py脚本并运行:
python get-pip.py pip==19.3.1
这会将 pip 恢复到以前的版本

你不听你自己的 CI 测试吗?

永远记住,维护者也是人类,编程错误实际上在这个物种中很常见。 我们应该提供他们或社区需要的任何支持,而不是指责人们。

我刚刚遇到了同样的问题,我从 repo (20.1.dev) 安装了 pip 并解决了它。 刚刚克隆了这个 repo 和pip install -e ./pip

顺便说一句,看起来这只是一个缺少的导入。 我的解决方法是:

pip\_internal\distributions\source\__init__.py

from .legacy import SourceDistribution

确认后,我们的 CI 系统遇到了同样的问题。

https://github.com/pypa/pip/issues/7217
安装旧版本:
卷曲https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py pip==19.3.1

可能的本地解决方法:
https://github.com/pypa/pip/issues/7217#issuecomment -576653463

删除文件夹 ./site-packages/pip/_internal/distributions/source 有帮助!

这已在 https://github.com/pypa/pip/pull/7621 中修复,链接自 https://github.com/pypa/pip/issues/7217 :)

同样,在 EC2 实例上的 Amazon Linux 以及本地 Fedora 机器上都得到了证实。

出于纯粹的好奇,为什么即使最后一个管道未能显示此错误,此版本仍会发布? https://travis-ci.org/pypa/pip/builds/639902383

完全不是一句刻薄的话,只是对发布过程感兴趣,以后如何避免此类问题!

非常感谢正在进行的修复工作:+1:

我最近使用“python -m pip install --upgrade pip”升级到 pip 20.0。 升级后,甚至“pip list”命令也中断了。 现在我看到发布了一个新版本 20.0.1,但是如果我执行“python -m pip install --upgrade pip”,那么我会得到同样的错误。 如何升级到最新的 pip 版本 20.0.1?

@nachiketrss尝试使用get-pip.py安装

@nachiketrss卷曲https://bootstrap.pypa.io/get-pip.py | Python

或者python3

CentOS 7 与 Python3.6 的类似错误:

$ cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)

$ mkvirtualenv --python=/usr/bin/python3.6 foo

(foo) $ which python
~/.virtualenvs/foo/bin/python


(foo) $ which pip
~/.virtualenvs/foo/bin/pip

(foo) $ pip --version
pip 20.0 from /home/foo/.virtualenvs/foo/lib/python3.6/site-packages/pip (python 3.6)


(foo) $ pip list
Traceback (most recent call last):
  File "/home/foo/.virtualenvs/foo/bin/pip", line 10, in <module>
    sys.exit(main())
  File "/home/foo/.virtualenvs/foo/lib/python3.6/site-packages/pip/_internal/cli/main.py", line 73, in main
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
  File "/home/foo/.virtualenvs/foo/lib/python3.6/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/home/foo/.virtualenvs/foo/lib64/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/foo/.virtualenvs/foo/lib/python3.6/site-packages/pip/_internal/commands/list.py", line 13, in <module>
    from pip._internal.cli.req_command import IndexGroupCommand
  File "/home/foo/.virtualenvs/foo/lib/python3.6/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/home/foo/.virtualenvs/foo/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
    from pip._internal.distributions import (
  File "/home/foo/.virtualenvs/foo/lib/python3.6/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution'

不再看到 pip 20.0.1 版本的问题,谢谢。 同意,在@lerela引用的构建日志中理解上面的作业失败会很有帮助。

我可以确认 20.0.1 解决了这个问题。

CentOS 7 与 Python3.6 的类似错误:

$ cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)

$ mkvirtualenv --python=/usr/bin/python3.6 foo

(foo) $ which python
~/.virtualenvs/foo/bin/python


(foo) $ which pip
~/.virtualenvs/foo/bin/pip

(foo) $ pip --version
pip 20.0 from /home/foo/.virtualenvs/foo/lib/python3.6/site-packages/pip (python 3.6)


(foo) $ pip list
Traceback (most recent call last):
  File "/home/foo/.virtualenvs/foo/bin/pip", line 10, in <module>
    sys.exit(main())
  File "/home/foo/.virtualenvs/foo/lib/python3.6/site-packages/pip/_internal/cli/main.py", line 73, in main
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
  File "/home/foo/.virtualenvs/foo/lib/python3.6/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/home/foo/.virtualenvs/foo/lib64/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/foo/.virtualenvs/foo/lib/python3.6/site-packages/pip/_internal/commands/list.py", line 13, in <module>
    from pip._internal.cli.req_command import IndexGroupCommand
  File "/home/foo/.virtualenvs/foo/lib/python3.6/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/home/foo/.virtualenvs/foo/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
    from pip._internal.distributions import (
  File "/home/foo/.virtualenvs/foo/lib/python3.6/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution'

关闭当前终端并使用新终端为我解决了这个问题。

好的,看起来这个问题已经修复了。 关闭。

我知道所有从事这项工作的人都是志愿者,我为他们所做的所有工作感到非常高兴!

但正如@lerela提到的,我们应该调查一下这样的事情是如何发生的,以及我们如何避免这样的错误。

Pip 是整个软件行业的核心和最常用的工具之一。
看起来好像发布了一个新版本,尽管它至少没有经过测试以运行基本命令。

我们会在发布前检查这些构建吗?
发布过程是否以某种方式进行管理和审查,还是单人表演?

如果在一些紧急匆忙的修补程序发布中发生这种错误,我会理解这种情况,但版本 20 是在 19.3.1 之后的几个月发布的。

好吧,我们找出了造成这种情况的原因,并正在对发布过程进行更改以解决该问题: https ://github.com/pypa/pip/pull/7624

出于纯粹的好奇,为什么即使最后一个管道未能显示此错误,此版本仍会发布? https://travis-ci.org/pypa/pip/builds/639902383

完全不是一句刻薄的话,只是对发布过程感兴趣,以后如何避免此类问题!

非常感谢正在进行的修复工作👍

@lerela @pabelanger这不是这里发生的事情:构建日志是在发布完成后运行的(该提交是在发布期间由脚本运行的),这些失败的构建日志(例如这个)证明了这一点:

Using cached https://files.pythonhosted.org/packages/60/65/16487a7c4e0f95bb3fc89c2e377be331fd496b7a9b08fd3077de7f3ae2cf/pip-20.0-py2.py3-none-any.whl

这种情况是有道理的:这个变化是在一段时间前合并的,并没有立即导致失败,因为它不是源代码错误,一个 sich。 例如,从“足够老”的 pip 升级时不会发生这种情况(我使用的是 9.0.1)。 相反,它是由升级时留下的人工制品引起的(目前尚不清楚其潜在错误,至少对我而言)。

管道没有发现这个问题,因此欢迎@lerela @pabelanger进一步改进管道中的测试升级路径,并且为 pip 做出贡献很容易!

已确认,当您尝试安装或升级新的基于 python 应用程序时,AWS Beanstalk 失败...

感谢您如此快速地解决问题@pradyunsg

解决这个问题的最佳途径是什么? 尝试将我的 ec2 实例上的pip从 pip20.0 更新到 20.1 仍然失败并出现此错误。 sudo pip2 install -U pip2

解决这个问题的最佳途径是什么? 尝试将我的 ec2 实例上的pip从 pip20.0 更新到 20.1 仍然失败并出现此错误。 sudo pip2 install -U pip2

https://github.com/pypa/pip/issues/7620#issuecomment -576669697

@fideloper感谢您的提问! 我刚才在另一个问题上回答了这个问题: https ://github.com/pypa/pip/issues/7217#issuecomment -576698030

@honnix的建议也有效,尽管我建议不要使用curl ... | python

太好了,非常感谢大家!

@fideloper如果您的发行版没有从 CPython 中窃取ensurepip ,您应该可以通过python -m ensurepip使用它

另外,感谢您发布您对 CI 运行的分析@cryvate! 我刚回来回应,你的评论基本上是正确的。

FWIW,在 pip 20.0之前失败的 pip 的唯一 CI 作业是 Windows 的非测试作业,因为一些 git+Windows+authors.txt 问题,这与实际发布过程几乎无关。

在我看来是固定的。 我今天早上在我们的一个 CI 管道上遇到了这个错误,现在它似乎已修复。 固定pip install -U "pip<20"是一种解决方法,但我刚刚不小心尝试了它,它似乎已修复。

我们仍然在20.0.1中看到这个问题。

将致力于组装一个复制品,但我们得到的错误是因为依赖于xgboost==0.81 ,它在 pip 19 上下载了一个 whl 包,但在 20.0 和 20.0.1 上下载了一个 tarball 并尝试构建它(失败是因为我们的构建链没有安装所需的工具)。

@tomasaschan您能否提交一个新问题,提供有关构建如何进行的更多详细信息,并且理想情况下,使用最少的复制器?

@tomasaschan我认为您看到的是不同的问题,而不是这个。 这个问题是关于 pip 本身的安装损坏。 在你的情况下,我认为你看到了一些关于轮标签的行为变化,比如#6908。 请问可以提交一个新问题吗?

xgboost有一些奇怪的标签。它有xgboost-0.90-py2.py3-none-manylinux1_x86_64.whl但这很奇怪:如果一个包包含manylinux1所示的编译 C 扩展,那么它可能不太可能真的是py2.py3-none ,但这可以讨论。与gevent-1.4.0-cp27-cp27m-manylinux1_x86_64.whl对比)

sudo python get-pip.py pip==19.3.1
解决这个问题

@pradyunsg @jamadden正在整理一个最小的 Dockerfile 来重现错误; 一旦我设法提交一个新问题。 (我们有好几层内部基础镜像,我必须深入挖掘才能找到要放入FROM的公开可用的内容......)

为了像我这样的 Py 菜鸟的利益,有人可以为这个问题提供一个干净、完整的修复或解决方法吗? 另外,不确定这有多重要,但我得到的错误消息有点不同:
ImportError: cannot import name 'PackageFinder' from 'pip._internal.index' (/usr/lib/python3.8/site-packages/pip/_internal/index/__init__.py)
感谢您的快速修复,也感谢您的写作!

@richard-steiger 我有同样的问题。 我的解决方法是卸载 pip,从pypi下载 v20.0.1 的 tar.gz,然后通过运行“python setup.py install”进行安装。

已修复(在 Cygwin-X 下)!

blh@LPT-V-23 ~
$ python /cygdrive/c/Temp/get-pip.py pip==19.3.1
收集点==19.3.1
缓存条目反序列化失败,条目被忽略
缓存条目反序列化失败,条目被忽略
下载 https://files.pythonhosted.org/packages/00/b6/9cfa56b4081ad13874b0c6f96af8ce16cfbc1cb06bedf8e9164ce5551ec1/pip-19.3.1-py2.py3-none-any.whl (1.4MB)
100% |################################| 1.4MB 585kB/s
安装收集的包:pip
找到现有安装:pip 20.0
卸载 pip-20.0:
成功卸载 pip-20.0
成功安装 pip-19.3.1
您使用的是 pip 版本 19.3.1,但版本 20.0.1 可用。
您应该考虑通过“pip install --upgrade pip”命令进行升级。

blh@LPT-V-23 ~
$ pip-review --local --interactive
pexpect==4.8.0 可用(你有 4.7.0)
现在升级? [Y]es, [N]o, [A]ll, [Q]uit y
pip==20.0.1 可用(你有 19.3.1)
现在升级? [Y]es, [N]o, [A]ll, [Q]uit n
urllib3==1.25.8 可用(你有 1.25.7)
现在升级? [Y]es, [N]o, [A]ll, [Q]uit y
收集pexpect==4.8.0
下载 https://files.pythonhosted.org/packages/39/7b/88dbb785881c28a102619d46423cb853b46dbccc70d3ac362d99773a78ce/pexpect-4.8.0-py2.py3-none-any.whl (59kB)
|################################| 61kB 797kB/s
收集urllib3==1.25.8
下载 https://files.pythonhosted.org/packages/e8/74/6e4f91745020f967d09332bb2b8b9b10090957334692eb88ea4afe91b77f/urllib3-1.25.8-py2.py3-none-any.whl (125kB)
|################################| 133kB 14.6MB/秒
已满足要求:/usr/lib/python3.6/site-packages 中的 ptyprocess>=0.5(来自 pexpect==4.8.0)(0.6.0)
安装收集的包:pexpect、urllib3
找到现有安装:pexpect 4.7.0
卸载 pexpect-4.7.0:
成功卸载 pexpect-4.7.0
找到现有安装:urllib3 1.25.7
卸载 urllib3-1.25.7:
成功卸载 urllib3-1.25.7
成功安装 pexpect-4.8.0 urllib3-1.25.8
警告:您使用的是 pip 版本 19.3.1; 但是,版本 20.0.1 可用。
您应该考虑通过“pip install --upgrade pip”命令进行升级。

blh@LPT-V-23 ~
$ pip install --upgrade pip
收集点
下载 https://files.pythonhosted.org/packages/57/36/67f809c135c17ec9b8276466cc57f35b98c240f55c780689ea29fa32f512/pip-20.0.1-py2.py3-none-any.whl (1.5MB)
|################################| 1.5MB 2.4MB/秒
安装收集的包:pip
找到现有安装:pip 19.3.1
卸载 pip-19.3.1:
成功卸载 pip-19.3.1
成功安装 pip-20.0.1

现在 pip 在 20.0.1 版本中完全可以工作!!!

blh@LPT-V-23 ~
$ pip-review --local --interactive
dbus-python==1.2.16 可用(你有 1.2.8)
现在升级? [Y]es, [N]o, [A]ll, [Q]uit n
numpy==1.18.1 可用(你有 1.16.2)
现在升级? [Y]es, [N]o, [A]ll, [Q]uit n

readthedocs 也受此影响:

/home/docs/checkouts/readthedocs.org/user_builds/returns/envs/latest/bin/python -m pip install --upgrade --cache-dir /home/docs/checkouts/readthedocs.org/user_builds/returns/.cache/pip pip

Traceback (most recent call last):
  File "/home/docs/.pyenv/versions/3.6.8/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/docs/.pyenv/versions/3.6.8/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/docs/checkouts/readthedocs.org/user_builds/returns/envs/latest/lib/python3.6/site-packages/pip/__main__.py", line 16, in <module>
    from pip._internal import main as _main  # isort:skip # noqa
  File "/home/docs/checkouts/readthedocs.org/user_builds/returns/envs/latest/lib/python3.6/site-packages/pip/_internal/__init__.py", line 40, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/home/docs/checkouts/readthedocs.org/user_builds/returns/envs/latest/lib/python3.6/site-packages/pip/_internal/cli/autocompletion.py", line 8, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/home/docs/checkouts/readthedocs.org/user_builds/returns/envs/latest/lib/python3.6/site-packages/pip/_internal/cli/main_parser.py", line 12, in <module>
    from pip._internal.commands import (
  File "/home/docs/checkouts/readthedocs.org/user_builds/returns/envs/latest/lib/python3.6/site-packages/pip/_internal/commands/__init__.py", line 6, in <module>
    from pip._internal.commands.completion import CompletionCommand
  File "/home/docs/checkouts/readthedocs.org/user_builds/returns/envs/latest/lib/python3.6/site-packages/pip/_internal/commands/completion.py", line 6, in <module>
    from pip._internal.cli.base_command import Command
  File "/home/docs/checkouts/readthedocs.org/user_builds/returns/envs/latest/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 25, in <module>
    from pip._internal.index import PackageFinder
ImportError: cannot import name 'PackageFinder'

readthedocs 刚刚为我安装了 pip 20.0.1,所以损坏的级联似乎停止了,干得好! :笑脸:

pip 20.0.1 在 MACOS 10.15.2 和 Python 2.7 上没有为我修复它。 我首先尝试的 pip 19.3.1 也存在问题。

iMac:~ george$ sudo easy_install pip 搜索 pip 最佳匹配:pip 20.0.1 处理 pip-20.0.1-py2.7.egg 从 easy-install.pth 文件中删除 pip 19.3.1 将 pip 20.0.1 添加到 easy- install.pth 文件 将 pip 脚本安装到 /usr/local/bin 将 pip3.8 脚本安装到 /usr/local/bin 将 pip3 脚本安装到 /usr/local/bin

使用 /Library/Python/2.7/site-packages/pip-20.0.1-py2.7.egg 处理 pip 的依赖关系 完成处理 pip 的依赖关系

iMac:~ george$ pip install -U spacy Traceback(最近一次调用最后):
文件“/opt/local/bin/pip”,第 11 行,在
sys.exit(main())
文件“/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip/_internal/cli/main.py”,第 73 行,在 main
command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
文件“/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip/_internal/commands/__init__.py”,第 96 行,在 create_command
模块 = importlib.import_module(module_path)
文件“/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py”,第 37 行,在 import_module
__import__(名称)
文件“/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip/_internal/commands/install.py”,第 24 行,在
从 pip._internal.cli.req_command 导入 RequirementCommand
文件“/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip/_internal/cli/req_command.py”,第 20 行,在
从 pip._internal.operations.prepare 导入 RequirementPreparer
文件“/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip/_internal/operations/prepare.py”,第 16 行,在
从 pip._internal.distributions 导入(
文件“/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip/_internal/distributions/__init__.py”,第 1 行,在
从 pip._internal.distributions.source 导入 SourceDistribution
ImportError:无法导入名称 SourceDistribution

@george542您正常安装了不同的 pip,而您还使用 setuptools 以损坏的方式安装了较新的 pip,请清除所有 pip 安装和 pip egg 安装,然后使用处理正确设置的 get-pip 脚本安装 pip

尝试在 circleci 中通过 pip 安装 awscli 时出现此问题。

通过在 _config.yml_ 文件中运行pip install awscli pip install pip -U来解决。

readthedocs 刚刚为我安装了 pip 20.0.1,所以损坏的级联似乎停止了,干得好! 😃

你是如何让 readthedocs 为你安装 pip 20.0.1 的? 我尝试在我的 requirements.txt 文件中指定 pip==20.0.1 ,但仍然收到 sobolevn 上面提到的错误。

嗯,默认情况下它只是在开始时更新 pip。 但我认为擦除构建环境可能会触发它。

那么pip2.7 install --upgrade pip现在应该可以解决问题了吗?

嗯,默认情况下它只是在开始时更新 pip。 但我认为擦除构建环境可能会触发它。

那行得通! 谢谢!

大家好,
我的操作系统是 Arch-Linux。
我按照文档安装 wfuzz,不幸的是我再次收到此错误。 我该如何解决? 先感谢您。

sudo pip install wfuzz Traceback (most recent call last): File "/usr/bin/pip", line 11, in <module> load_entry_point('pip==19.3', 'console_scripts', 'pip')() File "/usr/lib/python3.8/site-packages/pip/_internal/main.py", line 45, in main command = create_command(cmd_name, isolated=("--isolated" in cmd_args)) File "/usr/lib/python3.8/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command module = importlib.import_module(module_path) File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1014, in _gcd_import File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 671, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 783, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "/usr/lib/python3.8/site-packages/pip/_internal/commands/install.py", line 24, in <module> from pip._internal.cli.req_command import RequirementCommand File "/usr/lib/python3.8/site-packages/pip/_internal/cli/req_command.py", line 17, in <module> from pip._internal.index import PackageFinder ImportError: cannot import name 'PackageFinder' from 'pip._internal.index' (/usr/lib/python3.8/site-packages/pip/_internal/index/__init__.py)

@Serialc0dehttps://github.com/pypa/pip/issues/5599。 您的/usr/bin/pip和您的 pip 安装不同步。 (而且你不应该使用sudo pip ...

@Serialc0de 韦迪#5599 。 La tua /usr/bin/pip e la tua installazione pip non sono sincronizzate。 (E non dovresti usare sudo pip ...

你能帮帮我吗,我已经敲了 19 个小时,但我找不到任何人来解决这个问题,即使是自由职业者,你能通过 tw 帮助我,以便你能很好地解释我吗? 提前谢谢兄弟

让 pip 再次工作的解决方法是获取get-pip.py脚本并运行:
python get-pip.py pip==19.3.1
这会将 pip 恢复到以前的版本

谢谢! 这对我有用(python 3.7.4 在cygwin64上运行)

请注意,我们还遇到了其他问题,我们已在此处修复:

https://github.com/readthedocs/readthedocs.org/pull/6598#issue -368291092

请注意,我们还遇到了其他问题,我们已在此处修复:

readthedocs/readthedocs.org#6598(评论)

谢谢。 简单地运行python get-pip.py为我解决了这个问题(安装了 pip-20.0.2)。

获得了最新的 20.0.2 但仍然看到相同的行为 pip 根本不起作用

与@abhi2687 相同。 我感觉可能是 Ubuntu 运行了错误的版本(又名:https://github.com/pypa/pip/issues/7620#issuecomment-579257985)。 目前,失败的脚本是:

pip install --upgrade pip
pip install -r requirements.txt --user
pip install -r requirements_dev.txt --user

Traceback (most recent call last):
  File "/usr/local/bin/pip", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.8/site-packages/pip/_internal/main.py", line 45, in main
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
  File "/usr/local/lib/python3.8/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/usr/local/lib/python3.8/site-packages/pip/_internal/commands/install.py", line 23, in <module>
    from pip._internal.cli.req_command import RequirementCommand
  File "/usr/local/lib/python3.8/site-packages/pip/_internal/cli/req_command.py", line 17, in <module>
    from pip._internal.index import PackageFinder
ImportError: cannot import name 'PackageFinder' from 'pip._internal.index' (/usr/local/lib/python3.8/site-packages/pip/_internal/index/__init__.py)

Exited with code exit status 1

升级似乎很好,它确实下载/安装 20.0.2,但它似乎运行 20.0。

我正在使用 Circleci 框进行验证。 在我的本地机器上, pip install --upgrade pip修复了这个问题(Ubuntu 19.10)。 所以不确定它是否是某些版本的 Ubuntu,与 circleci 容器circleci/python:3.8或什么有关。

到目前为止,两个有效的解决方案:

  1. 降级到python get-pip.py pip==19.3.1并等待它结束。
  2. 通过pip install --upgrade pip升级到 20.0.2 并删除对 20.0.0 的所有引用。

没有什么对我不起作用!
在 Windows 7 & 10 & Linux Raspbian 上试过,但似乎没有任何效果!
我安装了最新的 20.0.2 pip 和 Python 3.8.1。

安装了 Python 3.8.1,Windows 8.1 同样的错误:警告:您使用的是 pip 版本 19.2.3,但是版本 20.0.2 可用。 您应该考虑通过“python -m pip install --upgrade pip”命令进行升级。

让 pip 再次工作的解决方法是获取 get-pip.py https://bootstrap.pypa.io/get-pip.py脚本并运行:
python get-pip.py pip==19.3.1
这会将 pip 恢复到以前的版本

谢谢! 这对我有用(在cygwin64上运行的python 3.7.4)


你收到这个是因为你被提到了。
回复此电子邮件直接,查看它在GitHub上https://github.com/pypa/pip/issues/7620?email_source=notifications&email_token=ABHAYIUZZTOF5FQIJBXBHJDRACAGRA5CNFSM4KJSF7MKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEKERQ6I#issuecomment-579410041 ,或退订https://github.com/notifications/unsubscribe-授权/ABHAYIVCAZKVV53U4GXSTBTRACAGRANCNFSM4KJSF7MA

[R Steiger] 谢谢,也使用了 python3.8.1

好!
我这样做了,但当时 PyPI 存在 SSL 问题

在过去的几周里,我一直遇到同样的问题。 我正在运行 MacOS 10.5.3,并且通过 Homebrew 安装了 Python 3.7.6。 我今天刚刚将我的一个虚拟环境中的 Pip 从版本 19.x 升级到版本 20.0,它破坏了我的虚拟环境。 我收到以下错误:

Traceback (most recent call last): File "/Users/jeff/Envs/test/bin/pip3", line 5, in <module> from pip._internal.cli.main import main ModuleNotFoundError: No module named 'pip._internal.cli.main'

对于任何在其 CI 中有此内容的人,请尝试清除您的 CI 缓存

可能和这里的问题一样。 尝试使用

pip install --no-use-pep517 <package>

可能相关https://github.com/pypa/pipenv/issues/4128。 我发现对我有用的另一个修复是

pip install -U pipenv virtualenv
virtualenv .venv --seeder pip
PIPENV_VENV_IN_PROJECT=1 pipenv install

@jeffself同样的情况。

https://github.com/pypa/pip/issues/5599#issue -341052110 解决了问题(如 pip 消息所示)。

让 pip 再次工作的解决方法是获取get-pip.py脚本并运行:
python get-pip.py pip==19.3.1
这会将 pip 恢复到以前的版本

谢谢兄弟...这个解决方法节省了我的archlinux发行版=)

我会建议一个可以节省大量时间和痛苦的通用工作场所:
打开 Setup.cfg 和 Pip 模块并验证您的 pip 版本、模块名称+版本等...多次升级/降级后文件状态不会改变,因此导致冲突的要求。

现在PyPI 支持 yanked 版本,我继续将 pip 20.0 标记为“yanked”。 pip > 19.2 默认情况下不会安装它,并且在通过pip install pip==20安装时会打印警告:

WARNING: The candidate selected for download or install is a yanked version: 'pip' candidate (version 20.0 at https://files.pythonhosted.org/packages/60/65/16487a7c4e0f95bb3fc89c2e377be331fd496b7a9b08fd3077de7f3ae2cf/pip-20.0-py2.py3-none-any.whl#sha256=eea07b449d969dbc8c062c157852cf8ed2ad1b8b5ac965a6b819e62929e41703 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*))

我在使用 pip 安装软件包时遇到问题,即使我已经使用 anaconda 安装了 python 我仍然面临这个问题,我尝试卸载它然后再次安装它以检查问题是否已解决,但错误仍然存​​在.

这是我一直面临的错误的截图,请帮我解决这个错误。
提前谢谢你
image

基本上,如果我使用 pip ,我会收到错误,我需要做什么

@AvAkanksh我看到这个错误有点不确定,您是否尝试过从您的计算机中完全删除 Python?

@AvAkanksh我看到这个错误有点不确定,您是否尝试过从您的计算机中完全删除 Python?

是的,我什至尝试过,但是输出发生了很大变化,它仍然给了我同样的错误

一样的...😡

我有同样的错误...

寻找点子
最佳匹配:pip 20.2.2
将 pip 20.2.2 添加到 easy-install.pth 文件
将 pip 脚本安装到 /usr/local/bin
错误:[Errno 2] 没有这样的文件或目录:'/usr/local/bin/pip'

此页面是否有帮助?
0 / 5 - 0 等级