当尝试在我的 Arch 系统上使用 Pip 时,出现以下错误。
Traceback (most recent call last):
File "/usr/bin/pip", line 5, in <module>
from pip._internal.cli.main import main
File "/usr/lib/python3.10/site-packages/pip/_internal/cli/main.py", line 9, in <module>
from pip._internal.cli.autocompletion import autocomplete
File "/usr/lib/python3.10/site-packages/pip/_internal/cli/autocompletion.py", line 10, in <module>
from pip._internal.cli.main_parser import create_main_parser
File "/usr/lib/python3.10/site-packages/pip/_internal/cli/main_parser.py", line 8, in <module>
from pip._internal.cli import cmdoptions
File "/usr/lib/python3.10/site-packages/pip/_internal/cli/cmdoptions.py", line 24, in <module>
from pip._internal.cli.parser import ConfigOptionParser
File "/usr/lib/python3.10/site-packages/pip/_internal/cli/parser.py", line 12, in <module>
from pip._internal.configuration import Configuration, ConfigurationError
File "/usr/lib/python3.10/site-packages/pip/_internal/configuration.py", line 26, in <module>
from pip._internal.utils.logging import getLogger
File "/usr/lib/python3.10/site-packages/pip/_internal/utils/logging.py", line 29, in <module>
from pip._internal.utils.misc import ensure_dir
File "/usr/lib/python3.10/site-packages/pip/_internal/utils/misc.py", line 37, in <module>
from pip._vendor.pep517 import Pep517HookCaller
ImportError: cannot import name 'Pep517HookCaller' from 'pep517' (/home/krystian/.local/lib/python3.10/site-packages/pep517/__init__.py)
我将 Arch 包与 Pip 包混合在一起,这是我不应该做的,但现在在虚拟环境之外执行 Pip 会显示此错误,并且我无法卸载这些包。我仍然可以在虚拟环境中使用 Pip 并通过 pacman 管理 Python 包。
Python版本:3.10.6
答案1
显然,这个问题与我安装 Pip 软件包无关sudo
,但它是pep517
我的用户环境中的一个损坏的软件包~/.local/lib/python3.10
。通过删除来删除包而不使用 Pip~/.local/lib/python3.10/site-packages/pep517/
修复了该问题。请记住在执行此操作之前备份site-packages
目录!
答案2
- 首先尝试重新安装软件包:
sudo pacman -S python-pip # reinstalls pip
which pip # checks the location of pip
pip install -U pip # DO NOT RUN AS SUDO! Upgrades pip
which pip # check the if the path is the same as previously
hash -r # clears bash cache
which pip # path *should* now be /usr/local/bin/pip
sudo reboot # reboots the machine
如果你幸运的话,你没有搞砸其他包,一切都会恢复正常。如果没有,请@我,我们会尽力解决您的问题。
编辑:
- 由于选项一不起作用,请尝试以下操作:
python -m pip uninstall pip # removes the pip installed using pip
关闭终端,重新打开,然后检查是否pip
有效。如果上述命令出现任何错误,请继续执行以下步骤
- 删除系统包:
pacman -Rsn python-pip # removes the package, unrequired deps, and their configuration files
whereis pip # check that pip has been completely removed
如果 pip 结果仍然存在于系统上,您可能必须尝试使用 运行步骤 2 中的命令sudo
,然后重复步骤 3 中的步骤。
- 如果
pip
已经成功删除:
pacman -S python-pip # installs the package
检查是否pip
有效。
- 最后的手段:如果这些都不起作用,您可能必须将路径设置为指向新
pip
安装的位置(例如alias pip="/usr/local/bin/pip"
),这只是一个肮脏的解决方法。否则,我真的不知道该怎么做;您可能需要重新安装操作系统。