Pip 停止在 Arch Linux 上工作

Pip 停止在 Arch Linux 上工作

当尝试在我的 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

  1. 首先尝试重新安装软件包:
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

如果你幸运的话,你没有搞砸其他包,一切都会恢复正常。如果没有,请@我,我们会尽力解决您的问题。


编辑:

  1. 由于选项一不起作用,请尝试以下操作:
python -m pip uninstall pip   # removes the pip installed using pip

关闭终端,重新打开,然后检查是否pip有效。如果上述命令出现任何错误,请继续执行以下步骤

  1. 删除系统包:
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 中的步骤。

  1. 如果pip已经成功删除:
pacman -S python-pip          # installs the package

检查是否pip有效。

  1. 最后的手段:如果这些都不起作用,您可能必须将路径设置为指向新pip安装的位置(例如alias pip="/usr/local/bin/pip"),这只是一个肮脏的解决方法。否则,我真的不知道该怎么做;您可能需要重新安装操作系统。

相关内容