杰瑞科技汇

mac pyenv如何切换Python版本?

第一步:确认你已经安装了 pyenv

如果你还没安装,请先参考官方文档进行安装,最常用的方法是使用 Homebrew:

mac pyenv如何切换Python版本?-图1
(图片来源网络,侵删)
# 安装 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.10
  • 7.9
  • system (系统自带的 Python 版本)

如果输出只有 system,说明你还没有通过 pyenv 安装过任何 Python 版本。

mac pyenv如何切换Python版本?-图2
(图片来源网络,侵删)

第三步:安装你想要的 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 版本。

mac pyenv如何切换Python版本?-图3
(图片来源网络,侵删)
# 设置全局 Python 版本为 3.9.7
pyenv global 3.9.7
# 验证当前使用的 Python 版本
python --version
# 应该输出: Python 3.9.7
# 再次查看 pyenv versions,会发现 3.9.7 前面多了星号 *
pyenv versions

局部切换 (针对特定项目目录)

这是 最推荐 的方式,可以确保每个项目使用独立的 Python 版本,避免版本冲突。

  1. 进入你的项目目录

    cd /path/to/your/python-project
  2. 为当前目录设置 Python 版本

    # 在项目目录下设置局部版本
    pyenv local 3.9.7

    这个命令会在你的项目目录下创建一个名为 .python-version 的隐藏文件,内容就是 9.7

  3. 验证

    # 验证当前 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

  1. 安装 pyenv 和 Python 版本:使用 pyenv install <version>
  2. 项目开发
    • 进入项目目录。
    • 使用 pyenv local <version> 为项目设置 Python 版本。
    • 创建并激活一个虚拟环境 (强烈推荐!):
      # 使用 pyenv-virtualenv 插件 (推荐)
      pyenv virtualenv 3.9.7 my-project-env
      pyenv activate my-project-env
  3. 个人电脑全局
    • 使用 pyenv global <version> 设置一个你常用的、稳定的 Python 版本作为全局默认。
  4. 临时测试
    • 使用 pyenv shell <version> 在当前会话中快速切换。

遵循以上流程,你就可以在 macOS 上非常灵活和可靠地管理多个 Python 版本了。

分享:
扫描分享到社交APP
上一篇
下一篇