Pip 21.1 无法导入 InvalidSchemeCombination

Zac*_*lan 19 python pip

在工作中,我们使用 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
Run Code Online (Sandbox Code Playgroud)

小智 21

ImportError:无法从“pip._internal.exceptions”导入名称“InvalidSchemeCombination”

此错误背后的原因是 pip 文件已损坏。

100% 的解决方案很简单,如下所示:

  1. 首先执行命令:python -m ensurepip --default-pip
  2. https://bootstrap.pypa.io/get-pip.py下载get-pip.py脚本文件
  3. 打开终端/命令提示符(管理员权限),cd到包含下载的get-pip.py文件的文件夹并运行:python get-pip.py
  4. 现在问题已经解决。

  • 为我工作,谢谢!但是什么原因导致 pip 损坏呢? (3认同)

Key*_*Usr 9

是的,有一个版本,最后一次修改该文件的提交来自 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.
Run Code Online (Sandbox Code Playgroud)

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

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

pip install pip==21.0.1
Run Code Online (Sandbox Code Playgroud)

更新:

链接OP 提交的问题#9880

更新 2:

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

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

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

  • 谢谢彼得。尽管我没有最好的重现细节,但我还是提交了一个错误。 (3认同)

Mar*_*ami 9

pip install pip==21.0.1不适合我的情况。运行此命令仍然会引发相同的错误。

如果您在虚拟环境中工作,则需要将get-pip.py文件保存在anaconda3\Scripts目录中。anaconda3\envs\[env_name]\Scripts然后,你需要cd到这个目录:

cd anaconda3\Scripts
Run Code Online (Sandbox Code Playgroud)

之后运行:

python get-pip.py pip==19.3.1
Run Code Online (Sandbox Code Playgroud)

或者

python get-pip.py pip==21.0.1
Run Code Online (Sandbox Code Playgroud)


Dr *_*Neo 7

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

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
Run Code Online (Sandbox Code Playgroud)

然后

python get-pip.py
Run Code Online (Sandbox Code Playgroud)

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

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