Pip21.1无法导入InvalidSchemeCombination

在工作中,我们使用 Github 操作来构建和测试我们的拉取请求,然后才能获得批准。周五下午,一切正常。周一早上,所有测试都很快失败,错误显示 pip 无法再找到自己的异常。最新的 Pip 有什么变化吗?

正如你在下面的错误中看到的,我们自己的代码没有被引用,而且我很确定我们的流程在周五和周一之间没有任何变化(我们是一个小团队,批准的 PR 没有任何令人惊讶的地方) )。

错误追溯:

Traceback (most recent call last):
    File "/opt/hostedtoolcache/Python/3.7.9/x64/bin/pip", line 5, in <module>
      from pip._internal.cli.main import main
    File "/opt/hostedtoolcache/Python/3.7.9/x64/lib/python3.7/site-packages/pip/_internal/cli/main.py", line 8, in <module>
      from pip._internal.cli.autocompletion import autocomplete
    File "/opt/hostedtoolcache/Python/3.7.9/x64/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", line 9, in <module>
      from pip._internal.cli.main_parser import create_main_parser
    File "/opt/hostedtoolcache/Python/3.7.9/x64/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", line 7, in <module>
      from pip._internal.cli import cmdoptions
    File "/opt/hostedtoolcache/Python/3.7.9/x64/lib/python3.7/site-packages/pip/_internal/cli/cmdoptions.py", line 22, in <module>
      from pip._internal.cli.progress_bars import BAR_TYPES
    File "/opt/hostedtoolcache/Python/3.7.9/x64/lib/python3.7/site-packages/pip/_internal/cli/progress_bars.py", line 9, in <module>
      from pip._internal.utils.logging import get_indentation
    File "/opt/hostedtoolcache/Python/3.7.9/x64/lib/python3.7/site-packages/pip/_internal/utils/logging.py", line 14, in <module>
      from pip._internal.utils.misc import ensure_dir
    File "/opt/hostedtoolcache/Python/3.7.9/x64/lib/python3.7/site-packages/pip/_internal/utils/misc.py", line 29, in <module>
      from pip._internal.locations import get_major_minor_version, site_packages, user_site
    File "/opt/hostedtoolcache/Python/3.7.9/x64/lib/python3.7/site-packages/pip/_internal/locations/__init__.py", line 9, in <module>
      from . import _distutils, _sysconfig
    File "/opt/hostedtoolcache/Python/3.7.9/x64/lib/python3.7/site-packages/pip/_internal/locations/_sysconfig.py", line 8, in <module>
      from pip._internal.exceptions import InvalidSchemeCombination, UserInstallationInvalid
  ImportError: cannot import name 'InvalidSchemeCombination' from 'pip._internal.exceptions' (/opt/hostedtoolcache/Python/3.7.9/x64/lib/python3.7/site-packages/pip/_internal/exceptions.py)
Error: The process '/opt/hostedtoolcache/Python/3.7.9/x64/bin/pip' failed with exit code 1

回答

是的,有一个版本,最后一次修改该文件的提交来自 2 天前,但很可能它会更旧。

引用NEWS.rst看起来好像正在进行一些迁移:

Process
-------

- Start installation scheme migration from ``distutils`` to ``sysconfig``. A
  warning is implemented to detect differences between the two implementations to
  encourage user reports, so we can avoid breakages before they happen.

但是,最好提交错误,以便他们可以在必要时发布修复程序。

经典的解决方法,降级到21.0.1,即 21.1 之后的下一个最新版本:

pip install pip==21.0.1

更新:

链接OP 提交的问题#9880。

更新 2:

根据 OP 的问题和其他人在相关问题中的经验进行调整。

不要使用-I标志forpip install,它用于安装系统上存在的文件(因此pip install --ignore-installed),而不是真正的升级(安装新版本,然后删除旧版本)。

相反,使用-U(ie pip install --upgrade) 标志可以做你想做的事。

  • Thanks Peter. I've submitted a bug even though I don't have the best repro details.

回答

因为macOS X,这个问题在我升级自制软件后发生在我身上,真正对我有用的是这个,

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

然后

python get-pip.py

根据参考资料中的讨论,似乎只能pip version 21.1.1解决问题。

参考以下讨论
https://github.com/pypa/pip/issues/7217


以上是Pip21.1无法导入InvalidSchemeCombination的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>