第一步:确认你已经安装了 pyenv
如果你还没安装,请先参考官方文档进行安装,最常用的方法是使用 Homebrew:

# 安装 pyenv brew install pyenv # 将 pyenv 初始化命令添加到你的 shell 配置文件中 (~/.zshrc 或 ~/.bash_profile) echo 'eval "$(pyenv init --path)"' >> ~/.zshrc echo 'eval "$(pyenv init -)"' >> ~/.zshrc # 重新加载 shell 配置文件,使更改生效 source ~/.zshrc
第二步:列出所有可安装和已安装的 Python 版本
这是切换版本前最重要的一步,你需要知道有哪些版本可以选择。
查看所有可安装的 Python 版本
pyenv 会从一个版本列表中下载安装,你可以用以下命令查看可用的版本:
# 查看所有可用的稳定版 (数量很多,建议用 grep 过滤) pyenv install --list | grep " 3\.[89]" # 查看所有 3.8 和 3.9 的版本 pyenv install --list | grep " 3\.[89]"
查看你已经安装的 Python 版本
pyenv versions
输出示例:
* 3.9.7(星号 表示当前正在使用的版本)8.107.9system(系统自带的 Python 版本)
如果输出只有 system,说明你还没有通过 pyenv 安装过任何 Python 版本。

第三步:安装你想要的 Python 版本
假设你想安装 Python 3.9.7,这是最常用的稳定版本之一。
# 安装指定的 Python 版本 (3.9.7) pyenv install 3.9.7
注意事项:
- 编译时间:第一次安装时,
pyenv会从源代码编译 Python,这需要一些时间(5-20 分钟,取决于你的 Mac 性能)。 - 依赖:如果编译失败,很可能是因为缺少系统依赖,对于 macOS,通常需要安装 Xcode Command Line Tools:
xcode-select --install
- 安装目录:安装的 Python 版本会被存放在
~/.pyenv/versions/目录下。
第四步:切换 Python 版本 (核心步骤)
pyenv 提供了三种主要的切换方式,适用于不同的场景。
全局切换 (影响整个用户环境)
这种方式会修改 ~/.pyenv/version 文件,之后你打开的所有新终端都会使用这个 Python 版本。

# 设置全局 Python 版本为 3.9.7 pyenv global 3.9.7 # 验证当前使用的 Python 版本 python --version # 应该输出: Python 3.9.7 # 再次查看 pyenv versions,会发现 3.9.7 前面多了星号 * pyenv versions
局部切换 (针对特定项目目录)
这是 最推荐 的方式,可以确保每个项目使用独立的 Python 版本,避免版本冲突。
-
进入你的项目目录:
cd /path/to/your/python-project
-
为当前目录设置 Python 版本:
# 在项目目录下设置局部版本 pyenv local 3.9.7
这个命令会在你的项目目录下创建一个名为
.python-version的隐藏文件,内容就是9.7。 -
验证:
# 验证当前 Python 版本 python --version # 应该输出: Python 3.9.7 # 查看 pyenv versions,会发现当前目录的版本被标记为局部版本 pyenv versions # 输出示例: # system # 3.8.10 # * 3.9.7 (set by /path/to/your/python-project/.python-version)
优点:只要你在这个目录下,
pyenv就会自动使用这个版本,当你切换到其他目录时,会恢复到你之前设置的global版本,这完美实现了项目间的环境隔离。
临时切换 (仅对当前终端会话有效)
如果你只是想在当前打开的终端窗口中使用某个版本,而不想影响全局或项目设置,可以使用 shell 命令。
# 在当前终端会话中临时切换到 Python 3.8.10 pyenv shell 3.8.10 # 验证 python --version # 输出: Python 3.8.10 # 关闭这个终端窗口后,再打开新终端,就会恢复到之前的版本
第五步:验证和检查 (非常重要)
切换版本后,请务必验证以下几点,这能帮你解决 90% 的问题。
检查 which 命令
which 命令会告诉你 python 命令的执行路径,这个路径应该指向你通过 pyenv 安装的 Python 版本,而不是系统自带的。
which python
正确的输出 (指向 pyenv 目录):
/Users/your_username/.pyenv/versions/3.9.7/bin/python
错误的输出 (指向系统目录):
/usr/bin/python 或 /usr/local/bin/python
如果看到错误的输出,说明你的 shell 没有正确找到 pyenv 管理的 Python,请确保你已经正确执行了 pyenv init 并重新加载了配置文件 (source ~/.zshrc)。
检查 pip 的路径
和 python 一样,pip 也应该由 pyenv 管理。
which pip
正确的输出:
/Users/your_username/.pyenv/versions/3.9.7/bin/pip
常见问题与解决方案
Q: 为什么我切换了版本,但 pip install 还是装到了系统环境里?
A: 这几乎总是因为 which python 指向了系统路径,请务必先解决 which 命令的问题,确保你的 shell 配置文件 (~/.zshrc 或 ~/.bash_profile) 中包含了 pyenv init 的命令,并且已经重新加载。
Q: 我想在项目中使用 pyenv local,但提示 "command not found"。
A: 这意味着你的终端会话没有加载 pyenv 的环境变量,请关闭当前终端,重新打开一个新的,然后再进入项目目录尝试。
Q: 如何取消局部设置?
A: 非常简单,直接删除项目目录下的 .python-version 文件即可。
cd /path/to/your/python-project rm .python-version
- 安装 pyenv 和 Python 版本:使用
pyenv install <version>。 - 项目开发:
- 进入项目目录。
- 使用
pyenv local <version>为项目设置 Python 版本。 - 创建并激活一个虚拟环境 (强烈推荐!):
# 使用 pyenv-virtualenv 插件 (推荐) pyenv virtualenv 3.9.7 my-project-env pyenv activate my-project-env
- 个人电脑全局:
- 使用
pyenv global <version>设置一个你常用的、稳定的 Python 版本作为全局默认。
- 使用
- 临时测试:
- 使用
pyenv shell <version>在当前会话中快速切换。
- 使用
遵循以上流程,你就可以在 macOS 上非常灵活和可靠地管理多个 Python 版本了。
