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