Pip: ImportError:无法从“pip._internal.distributions.source”导入名称“SourceDistribution”

创建于 2019-10-15  ·  101评论  ·  资料来源: pypa/pip

环境

CircleCI 使用 Conda,例如https://circleci.com/gh/peterjc/thapbi-pict/1073

  • pip 版本:pip-19.2.3(来自 conda)更新到 19.3(通过pip install --upgrade pip setuptools
  • Python版本:python-3.7.3
  • 操作系统:Linux

我只对我的代码进行了微小的更改,但今天在我的 Python 工具的构建/安装阶段,CircleCI 构建中断 - 多个分支受到影响。 时间适合在 PyPI 上发布 pip 19.3。

描述

似乎最近发布的 pip 移动了一些内部文件,我猜是#6830。

预期行为

如何复制

在全输出https://circleci.com/gh/peterjc/thapbi-pict/1073这是运行https://github.com/peterjc/thapbi-pict/blob/9fcec2da60e6e6ae5cf7ee6ad4b53dcc3a40cfe7/.circleci/config.yml#L56

...
python setup.py sdist --formats=gztar
python setup.py bdist_wheel
pip install dist/thapbi_pict-*.whl

输出

Traceback (most recent call last):
  File "/opt/conda/bin/pip", line 7, in <module>
    from pip._internal import main
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/__init__.py", line 40, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", line 8, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", line 11, in <module>
    from pip._internal.commands import (
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", line 9, in <module>
    from pip._internal.commands.download import DownloadCommand
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/commands/download.py", line 10, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 9, in <module>
    from pip._internal.distributions import (
  File "/opt/conda/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' (/opt/conda/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)
Exited with code 1
auto-locked support

最有用的评论

谢谢@PabloCastellano! 我现在只是忽略这里的评论,因为我不希望我的心率更高。 :)

进行了错误修复发布。 如果这有帮助,请在这篇文章中使用 👍。 否则,请在错误消息中写下评论。

所有101条评论

了解 CircleCI(或 conda?)设置中的哪些内容正在使用这些内部 API 会非常有帮助 - 重组不应该影响任何外部代码。 到目前为止,我们知道的主要问题是 main 的重组,这会影响包装脚本,但这看起来有点不同。 您可以提供的任何见解都将非常有用,谢谢。

确认删除pip install --upgrade pip setuptools固定的东西,

https://github.com/peterjc/thapbi-pict/commit/4060404c1034a676439aef1369260022577a6627
https://circleci.com/gh/peterjc/thapbi-pict/1074

即我从 pip 19.2.3 更新到 19.3 的方式出现了问题

我不是故意使用 CircleCI 提供的 Python,而是 Conda 提供的 Python - 从pip ...切换到python -m pip ...是否有价值,只是为了消除混合 Python 造成的可能性?

现在在分支上工作,添加了更多日志记录并恢复到损坏的版本:

https://circleci.com/gh/peterjc/thapbi-pict/1076

这确认回溯是由pip install dist/thapbi_pict-*.whl触发的(通配符以匹配单个新构建的轮子)。

对于它的价值,我刚刚确认from pip._internal import main适用于 pip 的简单升级(在 Windows 上,所以不是一个很好的比较,但无论如何......)。 所以我怀疑你的环境中有些东西不匹配,尽管我无法从回溯中看到它是什么。

CircleCI 有能力通过 SSH 访问 VM 重新运行作业(不是我曾经使用过它),所以理论上这可以用于调试,但我真的不知道从哪里开始。

我现在有一个解决方法,并且在某些时候 conda-forge 也会打包 pip 19.3,所以除非其他人看到相同的异常,否则它的优先级似乎很低?

好的。 如果您有解决方法,那么我现在可以将其留在那里。 如果其他人添加评论报告它正在其他地方发生,那么我们可以做更多的挖掘 - 也许他们会有额外的信息会有所帮助。

我在 macOS,python:3.6.9 上遇到了类似的问题。 我的终端上的 pip 命令不再起作用。 有什么建议?

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

这暂时有帮助

自 1 小时前以来,我在 CircleCI 上遇到了同样的问题。
将 docker 镜像的版本从python:3.7更改为python:3.7.4解决了这个问题。 (只是解决方法)。 像这样:

version: 2
...
jobs:
  build:
    docker:
      - image: python:3.7.4
...

你们中有人使用缓存吗? 我认为可能有一些 pip 内部结构发生了变化,并且当您恢复旧 python 版本的缓存时 pip 会中断。 建议您通过更改keys使您的圈子 CI 缓存失效,看看会发生什么......(对我有用!)

正如@bgkelly建议的有用

是的 - 对我来说也一样 - 更改缓存键已经为我们团队在 circleci 上的项目解决了这个问题。 谢谢@bgkelly

更改缓存密钥并没有为我解决问题。
虽然在requirements.txt添加评论确实做到了,但这不是一个理想的解决方案。

好的,所以这似乎是 CircleCI 的缓存问题。

有人可以联系 CircleCI 的人(通过他们的支持渠道)吗? 如果他们能对此进行调查并可能在这里插话,那就太好了。

嘿,人们,

我真的不知道这是否对您有任何帮助,但我在尝试安装 WeasyPrint 的 MSYS 设置中收到了相同的错误消息。

卸载 python3-pip 和 python3-setuptools 后,我删除了 /usr/lib/python3.7/site-packages/ 中的所有 pip 文件夹并重新安装了这两个.. 解决了该特定错误。

pacman -R python3-pip python3-setuptools
rm -R /usr/lib/python3.7/site-packages/pip
rm -R /usr/lib/python3.7/site-packages/pip-19.3.1.dist-info
pacman -S python3-pip python3-setuptools

公平地说,我现在遇到了编译器问题……但也许我可以帮忙……

以防万一这可能会有所帮助,我在不同的上下文中遇到了错误:在多阶段设置中将虚拟环境从一个 docker 映像复制到另一个时。

源图像包含pip的较新版本,而目标图像包含pip的升级版本。 将源镜像的虚拟环境目录复制到目标镜像后,虚拟环境site-packagespip下有2个不同的目录( pip-<version>.dist-info )不起作用,给出与此问题中报告的错误相同。

我没有花时间对问题进行故障排除,因为我对这种涉及将虚拟环境复制到已经安装了软件包的环境中的方法持怀疑态度。

无论如何,这似乎是一个包裹碰撞问题。

希望这可以帮助! :微笑:

你好
我相信我们在内部 ReadTheDocs 服务器上看到了同样的问题。 它在构建文档时运行以下命令:

var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/bin/python -m pip install --upgrade --cache-dir /var/lib/readthedocs/repo/user_builds/some_doc/.cache/pip pip

如果我通过 ReadTheDocs GUI 界面清除构建缓存,则构建成功 - 但仅在下次启动构建之前。

这是完整的日志:

Traceback (most recent call last):
  File "/usr/lib64/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/var/lib/readthedocs/repo/user_builds/some_doc/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 "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/__init__.py", line 40, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/var/lib/readthedocs/repo/user_builds/some_doc/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 "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/cli/main_parser.py", line 11, in <module>
    from pip._internal.commands import (
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/commands/__init__.py", line 9, in <module>
    from pip._internal.commands.download import DownloadCommand
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/commands/download.py", line 10, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 9, in <module>
    from pip._internal.distributions import (
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/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'

你好,

我也遇到过这个问题。

操作系统:Debian GNU/Linux 10 (Linux 4.19.0-6-amd64)
点数:19.3.1
康达:4.7.12
蟒蛇:3.7.4

$点
回溯(最近一次通话最后):
文件“/home/jiang/anaconda3/bin/pip”,第 7 行,在
从 pip._internal 导入主
文件“/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/__init__.py”,第 40 行,在
从 pip._internal.cli.autocompletion 导入自动完成
文件“/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py”,第 8 行,在
从 pip._internal.cli.main_parser 导入 create_main_parser
文件“/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py”,第 11 行,在
从 pip._internal.commands 导入(
文件“/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/commands/__init__.py”,第 9 行,在
从 pip._internal.commands.download 导入下载命令
文件“/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/commands/download.py”,第 10 行,在
从 pip._internal.operations.prepare 导入 RequirementPreparer
文件“/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/operations/prepare.py”,第 9 行,在
从 pip._internal.distributions 导入(
文件“/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py”,第1行,在
从 pip._internal.distributions.source 导入 SourceDistribution
ImportError:无法从“pip._internal.distributions.source”(/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)导入名称“SourceDistribution”

通过将构建流程更改为专门使用 pip 版本 19.2.3,我们能够在本地 ReadTheDocs 服务器上解决问题。 现在 ReadTheDocs 运行以下构建命令 - 我们不再有缓存问题:

/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/bin/python -m pip install --upgrade --cache-dir /var/lib/readthedocs/repo/user_builds/some_doc/.cache/pip pip==19.2.3

更具体地说,我们更新了本地 python_environment.py 文件以使用特定的 pip 版本: https :

cmd = pip_install_cmd + ['pip']

变成:

cmd = pip_install_cmd + ['pip==19.2.3']

我知道我的设置可能与大多数设置不同,但我的问题是由于虚拟环境中的 PIP sources/目录(很可能是 PIP 缓存问题或其他问题)。 让我解释:
删除项目的user_builds/project/envs/目录并重新构建它时,它可以工作,但只有在您再次使用envs/目录进行重新构建之前。 我花了很多时间调试问题是什么,结果发现是user_builds/project/envs/目录(或里面的东西)导致了问题。 所以我做了更多的测试,以确定它是user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/目录专门导致问题。 我删除了user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/目录,重新构建,一切都很好。 我再次重建,它失败了。 我再次检查了user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/目录,发现source/存在。 所以我去了我的全局 Python 安装并从 PIP 中移动了/path/to/lib/python3.6/dist-packages/pip/_internal/distributions/source/目录,从项目环境中删除了user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/目录,然后重新构建。 这成功构建并且没有复制source/文件夹,完美。 因此,现在任何时候构建文档时,它们都会毫无错误地构建。 我希望这对其他人有帮助。

干杯。

试试这个:

1.curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
2.python get-pip.py

@大师36

试了很多次都没有成功。 无论如何,您必须在一开始就这样做,所以这无济于事。 不过还是谢谢。

干杯。

试试这个:

1.curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
2.python get-pip.py

谢谢

我现在在 0.20 版本上遇到了这个问题。

现在正在调查这件事。 如果有人可以提供有关如何使用 pip 20.0 进行复制的说明,那就太好了!

我遇到了同样的问题:

virtualenv venv
. venv/bin/activate
pip install sqlalchemy pymysql

结果成

Traceback (most recent call last):
  File "/tmp/test/venv/bin/pip", line 11, in <module>
    sys.exit(main())
  File "/tmp/test/venv/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 "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/tmp/test/venv/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 "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/commands/install.py", line 24, in <module>
    from pip._internal.cli.req_command import RequirementCommand
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
    from pip._internal.distributions import (
  File "/tmp/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' (/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/distributions/source/__init__.py)

如果有人可以提供有关如何使用 pip 20.0 进行复制的说明,

简而言之,“尝试使用 pip”! 尝试在已安装 scipy 的工作虚拟环境上安装 scipy 的结果(即我希望 pip 什么都不做):

(farmcat3) [danielevans@rml-dev06 farmcat]$ pip install pip==20.0
Looking in indexes: https://pypi.org/simple, http://phabricator.jbarisk.com:8080
Collecting pip==20.0
  Downloading https://files.pythonhosted.org/packages/60/65/16487a7c4e0f95bb3fc89c2e377be331fd496b7a9b08fd3077de7f3ae2cf/pip-20.0-py2.py3-none-any.whl (1.5MB)
     |████████████████████████████████| 1.5MB 1.7MB/s
Installing collected packages: pip
  Found existing installation: pip 19.3.1
    Uninstalling pip-19.3.1:
      Successfully uninstalled pip-19.3.1
pipSuccessfully installed pip-20.0

(farmcat3) [danielevans@rml-dev06 farmcat]$ pip install scipy
Traceback (most recent call last):
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/bin/pip", line 8, in <module>
    sys.exit(main())
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/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/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/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/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 24, in <module>
    from pip._internal.cli.req_command import RequirementCommand
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
    from pip._internal.distributions import (
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/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'

curl get-pip.py技巧对我不起作用,但我解决了寻找我的 venv 和系统安装的“官方代码”之间的差异。 (我在集群上,_so hic sunt leones_...)

--- /usr/lib/python2.7/site-packages/pip/_internal/distributions/__init__.py 2019-10-28 08:47:20.727522000 +0100
+++ /home/dummyuser/ml/lib/python3.6/site-packages/pip/_internal/distributions/__init__.py 2020-01-21 12:55:48.000000000 +0100
@@ -1,4 +1,4 @@
-从 pip._internal.distributions.source.legacy 导入 SourceDistribution
+from pip._internal.distributions.source 导入 SourceDistribution
从 pip._internal.distributions.wheel 导入 WheelDistribution
从 pip._internal.utils.typing 导入 MYPY_CHECK_RUNNING

转移到python -m pip对我的情况有所帮助。 来自https://github.com/ome/jenkins-library-recursivemerge/pull/4/files

失败:

    (cd build && curl -sfL ${buildInfraUrl} | tar -zxf -)
    virtualenv build/venv && build/venv/bin/pip install ${sccPackage}

通过:

    python -m venv build/venv
    . build/venv/bin/activate
    python -m pip install ${sccPackage}

@pradyunsg ,在 Fedora 29 上我可以这样重现:

rm -rf ~/.local/lib/python3.7
sudo dnf install python3-pip
pip3.7 install -U --user pip
python3.7 -m pip install requests

```
回溯(最近一次通话最后):
_run_module_as_main 中的文件“/usr/lib64/python3.7/runpy.py”,第 193 行
“__main__”,mod_spec)
_run_code 中的文件“/usr/lib64/python3.7/runpy.py”,第 85 行
执行(代码,run_globals)
文件“/home/kaiant/.local/lib/python3.7/site-packages/pip/__main__.py”,第 19 行,在
sys.exit(_main())
文件“/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/cli/main.py”,第 73 行,在 main
command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
文件“/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/commands/__init__.py”,第 96 行,在 create_command
模块 = importlib.import_module(module_path)
import_module 中的文件“/usr/lib64/python3.7/importlib/__init__.py”,第 127 行
return _bootstrap._gcd_import(name[level:], package, level)
文件 ”",第 1006 行,在 _gcd_import 中
文件 ”",第 983 行,在 _find_and_load
文件 ”",第 967 行,在 _find_and_load_unlocked
文件 ”",第 677 行,在 _load_unlocked
文件 ”",第 728 行,在 exec_module 中
文件 ”",第 219 行,在 _call_with_frames_removed
文件“/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/commands/install.py”,第 24 行,在
从 pip._internal.cli.req_command 导入 RequirementCommand
文件“/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/cli/req_command.py”,第 20 行,在
从 pip._internal.operations.prepare 导入 RequirementPreparer
文件“/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/operations/prepare.py”,第 16 行,在
从 pip._internal.distributions 导入(
文件“/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py”,第 1 行,在
从 pip._internal.distributions.source 导入 SourceDistribution
ImportError:无法从“pip._internal.distributions.source”(/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)导入名称“SourceDistribution”


当我的部署将 pip 从 19.3.1 自动升级到 20.0 时,我刚刚得到了这个

一切都已经在使用 python -m pip - 这不是这里的问题

我可以告诉你 JediKev 的修复方法是删除这个文件夹:

站点包/pip/_internal/distributions/source

解决了问题

使用python:3.7-slim容器(基于 Debian)的普通 Python Docker 上下文也会受到影响:

[32;1m$ docker build --compress -t $REGISTRY_IMAGE_SPARROW .[0;m
#2 [internal] load .dockerignore
#2 transferring context: 493B done
#2 DONE 0.0s

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 1.22kB done
#1 DONE 0.0s

#3 [internal] load metadata for docker.io/library/python:3.7-slim
#3 DONE 0.8s

#4 [base 1/6] FROM docker.io/library/python:3.7-slim<strong i="7">@sha256</strong>:5886bc9424f2edc...
#4 DONE 0.0s

#5 [internal] load build context
#5 transferring context: 531.72kB 0.0s done
#5 DONE 0.0s

#10 [base 6/6] RUN pip install --upgrade pip
#10 CACHED

#8 [base 4/6] RUN ln -s usr/local/bin/docker-entrypoint.sh / # backwards co...
#8 CACHED

#9 [base 5/6] WORKDIR /app
#9 CACHED

#6 [base 2/6] COPY docker-entrypoint.sh /usr/local/bin/
#6 CACHED

#7 [base 3/6] RUN chmod +x /usr/local/bin/docker-entrypoint.sh
#7 CACHED

#11 [requirements 1/2] COPY requirements.txt requirements.txt
#11 CACHED

#12 [requirements 2/2] RUN pip install --no-cache-dir -r requirements.txt
#12 0.912 Traceback (most recent call last):
#12 0.912   File "/usr/local/bin/pip", line 8, in <module>
#12 0.912     sys.exit(main())
#12 0.912   File "/usr/local/lib/python3.7/site-packages/pip/_internal/cli/main.py", line 73, in main
#12 0.912     command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
#12 0.912   File "/usr/local/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
#12 0.912     module = importlib.import_module(module_path)
#12 0.912   File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
#12 0.912     return _bootstrap._gcd_import(name[level:], package, level)
#12 0.912   File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
#12 0.912   File "<frozen importlib._bootstrap>", line 983, in _find_and_load
#12 0.912   File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
#12 0.912   File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
#12 0.913   File "<frozen importlib._bootstrap_external>", line 728, in exec_module
#12 0.913   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
#12 0.913   File "/usr/local/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 24, in <module>
#12 0.913     from pip._internal.cli.req_command import RequirementCommand
#12 0.913   File "/usr/local/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
#12 0.913     from pip._internal.operations.prepare import RequirementPreparer
#12 0.913   File "/usr/local/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
#12 0.913     from pip._internal.distributions import (
#12 0.913   File "/usr/local/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
#12 0.913     from pip._internal.distributions.source import SourceDistribution
#12 0.913 ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/usr/local/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)
#12 ERROR: executor failed running [/bin/sh -c pip install --no-cache-dir -r requirements.txt]: runc did not terminate sucessfully
------
 > [requirements 2/2] RUN pip install --no-cache-dir -r requirements.txt:
------
failed to solve with frontend dockerfile.v0: failed to build LLB: executor failed running [/bin/sh -c pip install --no-cache-dir -r requirements.txt]: runc did not terminate sucessfully

在 github 操作上运行python:3.7.6-alpine得到了同样的结果

我可以在Dockerfile重现此错误:

FROM python:3.7

COPY requirements.txt .

RUN pip install --upgrade pip
RUN pip install -r requirements.txt

CMD pip --version

requirements.txst


当我构建这个图像时,我得到了这个令人讨厌的错误。 如果我删除升级 pip 的行,图像就会构建。

好的,我已经在本地复制了这个——我会尽快提交一个带有修复的 PR。

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

是的,pip 版本 20.0 中断

是的,这里有同样的问题(pip 20.0)。

是的,使用“virtualenv” pip 20.0 breaks 。 创建venv的命令

同样在这里,我们所有更新 pip 的 CI 构建都失败了。

由于我们端的相同错误,所有构建都被破坏了。

构建损坏

如果我回滚到 pip 19.x 怎么办? 它会起作用吗?

编辑:
pip install --upgrade "pip==19.3.1"仍然有效。

这里与 python 3.7.3 和 pip 20.0 相同

pip install pip"<20.0"临时解决方案,但它有效。

也许可以创建一个virtualenv pip到 19.3.1(上一个)

一个有效的快速修复方法是

卷曲https://bootstrap.pypa.io/get-pip.py -o get-pip.pypython get-pip.py pip==9.0.2

保存了我们的 CI 管道

Read The Docs 现在也受到这个问题的困扰,导致文档构建一直失败
373AED13-5DF1-4729-9923-114F83603B44

也许可以创建一个将 pip 版本设置为 19.3.1(上一个)的 virtualenv

@manuterovirtualenv命令的--no-download标志将避免在创建环境时尝试下载最新版本的pip

如果您使用 virtualenv,只需降级到 19.x。 这解决了我的 virtualenv 中的问题:

virtualenv --no-pip <ENV NAME>
# activate the virtual environment
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py pip==19.2.2

只好选择以前的版本来整理,
卷曲https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py pip=19.3.1

这里与 python 3.7.6 和 pip 20.0 相同

点子版本-20.0
蟒蛇版本 - 3.6
只需在文件中写入以下行
/lib/python3.6/site-packages/pip/_internal/distributions/source/__init__.py

从 .legacy 导入 SourceDistribution

看到此失败的其他人能否确认 pip/_internal/distributions 中有一个 source/ 文件夹?

如果您可以确认该文件夹存在,请不要在此处发表评论 - 使用此帖子上的 👍 反应。 该文件夹不存在,使用👎反应。

与 ubuntu 19.04 相同的问题

Successfully installed pip-20.0
Traceback (most recent call last):
  File "/home/pippo/.venvs/test_pgm/bin/pip", line 10, in <module>
    sys.exit(main())
  File "/home/pippo/.venvs/test_pgm/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/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/usr/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/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 24, in <module>
    from pip._internal.cli.req_command import RequirementCommand
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
    from pip._internal.distributions import (
  File "/home/pippo/.venvs/test_pgm/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/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)

它没有出现在 pip==19.2.3 所以现在我恢复了它

请停止举报“我也是”。 @pradyunsg目前正在修复

是的。 现在打这个昨天奏效了。

pipenv 用户的片段

wget https://bootstrap.pypa.io/get-pip.py -O get-pip.py
pipenv run python get-pip.py pip==19.3

对于快速修复,

$(which easy_install) pip==19.3

也可以

对于快速修复,

$(which easy_install) pip==19.3

也可以

在所有临时解决方法之间,只有这个对我有用

我想知道当他们删除 easy_install 时会发生什么... :) - 那么我们将如何解决 pip 问题?

用在这里工作的pip install --upgrade pip"<20.0"替换pip install --upgrade pip

只好选择以前的版本来整理,
卷曲https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py pip=19.3.1

应该是python3 get-pip.py pip==19.3.1

用在这里工作的pip install --upgrade pip"<20.0"替换pip install --upgrade pip

在码头帮我
运行 pip install --upgrade pip"<20.0"

谢谢@PabloCastellano! 我现在只是忽略这里的评论,因为我不希望我的心率更高。 :)

进行了错误修复发布。 如果这有帮助,请在这篇文章中使用 👍。 否则,请在错误消息中写下评论。

XD

我不希望我的心率更高。 :)
进行了错误修复发布。

@pradyunsg你刚刚降低了我的。 似乎工作。

@SergeyLadutko

用在这里工作的pip install --upgrade pip"<20.0"替换pip install --upgrade pip

在码头帮我
运行 pip install --upgrade pip"<20.0"

试试pip install --upgrade pip==19.3.1

好的,让我再次运行我的构建

@pradyunsg为快速修复

请注意,get-pip.py 尚未更新——那是因为,我在测试时为 get-pip 构建了自己的开发环境。 :)

我会在接下来的几分钟内更新它。

可以确认。 pip==20.0.1工作正常

@pradyunsg 是否有任何 CI 改进,以便将来不会发生? 一个码头集装箱就足够了。 你会为此接受 PR 吗?

请注意,get-pip.py 尚未更新——那是因为,我在测试时为 get-pip 构建了自己的开发环境。 :)

我会在接下来的几分钟内更新它。

:) 让我们知道什么时候可以进行

我会在接下来的几分钟内更新它。

好的,现在推这个。 现在,更改应该已经传播到 bootstrap.pypa.io。 或者真的很快。

我们的构建现在通过 get-pip.py 感谢@pradyunsg

pip 20.0.1 工作正常。 谢谢@pradyunsg

我可以确认,新的pip现在已安装,不再受此错误的影响。 谢谢@pradyunsg

谢谢@pradyunsg !!

谢谢@pradyunsg ! 很多

感谢@pradyunsg的快速修复! 🎉

感谢@pradyunsg快速周转!

我认为,问题的产生是因为在pip/_internal/distributions路径中有一个source模块目录以及source.py并且这会弄乱导入

pip/_internal/distributions/__init__.py有一个导入行:

from pip._internal.distributions.source import SourceDistribution # <-- here
from pip._internal.distributions.wheel import WheelDistribution
from pip._internal.utils.typing import MYPY_CHECK_RUNNING

但是还有一个source目录,里面有__init__.py

  env  ~/.../_internal/distributions  ls -ltr
total 32
-rw-r--r-- 1 user xxx 1294 Jan 21 18:02 wheel.py
-rw-r--r-- 1 user xxx  760 Jan 21 18:02 installed.py
-rw-r--r-- 1 user xxx 1425 Jan 21 18:02 base.py
drwxr-xr-x 3 user xxx 4096 Jan 21 18:02 source
-rw-r--r-- 1 user xxx 4201 Jan 21 18:19 source.py
-rw-r--r-- 1 user xxx  961 Jan 21 18:26 __init__.py
drwxr-xr-x 2 user xxx 4096 Jan 21 18:26 __pycache__

因此,该导入将失败。 将source.py重命名为_source.py并将__init__.py的导入更改为from pip._internal.distributions._source import SourceDistribution似乎可以修复它

@pradyunsg为快速修复

同意,这里的修复很棒!

谢谢@pradyunsg

与上述相同的错误。
Python版本:python-3.7.6
操作系统:Windows

移至 PIP 19.3.1 后工作

现在很好用,谢谢。

考虑到这个错误的性质,你能从 PYPA 中删除 20.0 版本吗? https://pypi.org/project/pip/#history

另一个问题是我们可以做些什么来避免将来出现类似的倒退。

对不起大家的破损,并感谢您在这里与我们一起修复此破损!

@xavfernandez找出了发生这种情况的原因,我们将对发布过程进行更改,以防止将来出现类似的故障:#7624

伟大的工作,感谢闪电般的快速周转!

你好,我卡在20.0
我尝试的所有命令都返回有关“SourceDistribution”的错误。

pip install --upgrade pip
pip install pip "<20.0"
pip install --upgrade "pip==19.3.1"

我也厌倦了卸载:

pip uninstall pip
python -m pip uninstall pip setuptools

有人有其他解决方案来卸载 pip 吗?

Ubuntu 18.04.3 LTS
蟒蛇 3.6.9
在虚拟环境中运行

嗨@CharrierCoop! 您应该能够下载 get-pip.py 并使用它安装 pip 20.0.1。

https://pip.pypa.io/en/stable/installing/

完美的 !!
谢谢@pradyunsg

你能从 PYPA 中删除 20.0 版本吗?

不,我们不会删除它。 我们有一个标准支持的功能,用于“拉动”损坏的版本。 一旦 PyPI 增加了对此的支持,我们就会取消这个版本(如果有人在乎的话)。

有关更多详细信息,请参阅https://www.python.org/dev/peps/pep-0592/#motivation

sudo python get-pip.py pip==19.3.1"
修复这个问题

sudo python get-pip.py pip==19.3.1"
修复这个问题

非常感谢你

sudo python get-pip.py pip==19.3.1"
修复这个问题

@pradyunsg 不需要这个问题

嗨@CharrierCoop! 您应该能够下载 get-pip.py 并使用它安装 pip 20.0.1。

https://pip.pypa.io/en/stable/installing/

我尝试在 Raspberry Pi 4(Python 3.7.3,pip 版本 - 20.0 和 OS - Raspbian Buster Lite)上做同样的事情,但没有成功。
错误:找不到满足要求的版本 pi p
错误:没有为 pip 找到匹配的分布

有什么解决办法吗?

@Gilf641请提交一个新问题——维护者更容易管理它。

我现在要继续关闭这个问题,因为它似乎对大多数用户都有效。

如果您仍然面临问题,请查找之前提交的副本(自 1 月 21 日起,针对 pip 20.0),如果没有,请提交新问题。

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