从 bash 更改为 zsh 后出现 pip 错误

从 bash 更改为 zsh 后出现 pip 错误

所以我最近从bashshell改为zsh.然而,我在使用 pip 时遇到了一些麻烦python。当我尝试时

pip list
ModuleNotFoundError: No module named 'pip._internal.main'

这样做which pip给了我/home/marvin/.local/bin/pip,所以按照我在我的中看到的一行bashrc,我将其添加到zshrc

# adding packages installed via pip
export PATH="/home/marvin/.local/bin:$PATH"

我还重新启动了 shell 和机器来尝试一下。我仍然无法使用 pip 处理虚拟环境。有人可以指导我解决这个问题吗?

[编辑]

所以我做了

python3 -m pip install --user --upgrade pip

并使其在全球范围内发挥作用。不幸的是,我不得不重新创建我的虚拟环境。但问题是,在 shell 之间切换意味着重新创建环境。一定有更好的方法来做这件事

答案1

我看到了此错误消息,这是与我的$PATH.

以下是一些故障排除步骤。

您可以使用 查看您的路径echo $PATH

which pip并且which python应该返回相同的位置。这些命令搜索您的目录以$PATH查找包含可执行文件的第一个位置。

如果您使用pyenv,which pipwhich python将返回相同的“shims”目录,但这并不一定意味着可执行文件正在从同一目录运行。在这种情况下,请使用pyenv which pippyenv which python

就我而言,~/.local/bin/当我在 tmux 中运行时,我的 $PATH 有一个目录被添加到前面。~/.local/bin/pip可执行文件但没有python可执行文件。所以我尝试使用pyenvPython 版本而不是~/.local/bin/pippip 版本。

编辑以澄清:

如果which pipwhich python显示不同的路径,或者在 pyenv 的情况下,如果pyenv which pippyenv which python显示不同的路径,那么这可能是问题所在。

该解决方案将取决于您的环境,因此很难给出一个放之四海而皆准的解决方案。

也许你$PATH~/.local/bin /usr/bin并且~/.local/binpip可执行文件但没有python可执行文件。所以你的计算机正在寻找,pip~/.local/bin正在python寻找/usr/bin。在这种情况下,如果您不需要它,可以将其删除pip~/.local/bin或者您可以将其更新为指向 pip 的符号链接/usr/bin(假设您pip那里有另一个可执行文件)。或者您可以添加一个符号链接~/.local/bin/pythonto /usr/bin/python。或者你可以更新你的$PATH以便它搜索/usr/bin 寻找~/.local/bin

解决方案取决于您的环境、Python 安装方式、要使用的版本等......

答案2

这种奇怪的现象可能是由一些 PATH 和 python/pip 版本差异引起的。

我建议在 bash 和 zsh 中检查这些命令的输出:

pip --version
python -m pip --version
pip2 --version
python2 -m pip --version
pip3 --version
python3 -m pip --version

作为@Kusalananda建议,您还需要检查初始化文件,例如.bashrc.这取决于...有时set在 zsh/bash 环境中区分输出更容易。这个差异可能很大(1k 行或更多),所以就像大海捞针一样。丢失或更改的变量(如 PATH )和 PYTHONNOUSERSITE、PYTHONPATH 以及以 PIP 开头或包含 PIP(或 PY?)shell 函数(如 pip() { ... } )的内容可能会计算在内。

相关内容