如何使用 pyenv 在 MacOS 上安装和使用不同版本的 python

How install and use different versions of pythons on MacOS using pyenv

开始时我 运行 $ which python3 我得到:

/Library/Frameworks/Python.framework/Versions/3.8/bin/python3

在我的 .zprofile 中我有:

PATH="/Library/Frameworks/Python.framework/Versions/3.8/bin:${PATH}"
export PATH

所以一开始,我安装了 3.8 并且可以正常工作。现在,我需要创建一个设置,允许我为不同的项目安装和使用不同版本的 python。

所以,我尝试了以下方法:

$ brew update
$ brew install pyenv
$ pyenv version

打印出来System。所以,它只能看到macos自带的python 2.7。然后我试了:

$ pyenv install 3.9.1
$ pyenv install 3.8.7
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.zshrc
$ source ~/.zshrc

现在,在我的 .zshrc 文件的末尾,我有:

if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi

但当我 运行 $ pyenv version 时,我仍然只得到 System。我知道 ~/.pyenv/versions 目录中安装了不同的 python 版本。那么,我还应该做些什么才能得到它 列出所有版本并在它们之间来回切换?

首先,要使 pyenv 正常工作,您应该卸载 /Library/Frameworks/Python.framework/Versions/3.8/bin/python3 中的 Python 并将其从 $PATH 中删除。

如果您使用 pyenv 来管理您的 Python 版本,那么您不应以任何其他方式安装 Python。 pyenv 将在您切换 Python 版本时自动更新您的路径。

接下来,您需要通过

设置pyenv的默认Python版本
$ pyenv global 3.9.1

在命令行上。

最后,要切换Python版本,可以使用

$ pyenv local 3.8.7

在命令行上。请注意,设置本地 Python 是粘性的,并且在每个目录的基础上工作。因此,对于需要特定 Python 版本的每个目录,请使用此命令一次。

有关详细信息,请参阅 https://github.com/pyenv/pyenv/blob/master/COMMANDS.md