Pip 不使用垫片,但是 pyenv 的系统 'pip'

Pip not using shims, but system 'pip' for pyenv

我遇到了在我的 pyenv 环境中获得正确 'pip' 的问题。我试过重新安装 pyenv,但问题仍然存在。我使用的是配备 M1 芯片的 MacBook Air。我实际上是在尝试将我的 Python 3.9.4 安装的 pip 和 site-packages 分开,但不知何故它一直引用系统范围的 'pip'。

当前版本:

<me>:~:$ pyenv versions
* system (set by /Users/<me>/.pyenv/version)
  3.9.4

在我的 $HOME 提示符下:

<me>:~:$ python -V
Python 2.7.16
<me>:~:$ which pip
/opt/homebrew/bin/pip
<me>:~:$ pip -V
pip 21.1 from /opt/homebrew/lib/python3.9/site-packages/pip (python 3.9)

中,我有一个用于 3.9.4

的 .python_version 文件
<me>:~:$ cd ~//<project 1>/
<me>:~//<project 1>:$ python -V
Python 3.9.4
<me>:~//<project 1>:$ pyenv versions
  system
* 3.9.4 (set by /Users/<me>/<project 1>/.python-version)

但是,当我执行“which pip”或“pip -V”时,它会显示系统 pip 二进制文件:

<me>:~/<project 1>:$ which pip
/opt/homebrew/bin/pip

<me>:~//<project 1>:$ pip -V
pip 21.1 from /opt/homebrew/lib/python3.9/site-packages/pip (python 3.9)

关于如何在 pyenv 版本下使用 'pip' 有什么想法吗?

所以,问题的根源在于 shims 文件夹中没有安装 pip 文件。

当我多次重播安装过程时,我注意到在最后的安装步骤中,我看到了以下日志输出:

Requirement already up-to-date: pip in $HOME/.local/lib/python3.9/site-packages (21.1)

我最终删除了我机器上所有现有的 pip 安装(在 opt/homebrew/ 和 $HOME/.local/lib/python* 中)。当我尝试重新安装时,我得到以下信息:

    * WARNING: The scripts pip3 and pip3.9 are installed in '/$HOME/.pyenv/versions/3.9.4/bin' which is not on PATH.
    * Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
    * Successfully installed pip-20.2.3 setuptools-49.2.1

按照上面的建议,将以下代码片段添加到我的 bash_profile 文件中:

export PATH="$HOME/.pyenv/versions/:$PATH"

如果 pyenv 安装程序忽略现有安装并继续确保 pip 安装在 shims 文件夹中,这可能可以避免。

我有一个类似的问题,通过将以下内容添加到我的 .zshrc(替换 <username>)来修复它,改编自 here

# pyenv
export PATH="/Users/<username>/.pyenv/shims:$PATH"
export PYENV_ROOT="$HOME/.pyenv"

注意:所有安装都是通过 Brew

完成的