Python Mac 上安装多个版本的 python,怎么管理

tester1.0 · October 21, 2022 · Last by tester1.0 replied at May 22, 2025 · 9617 hits

😀 pyenv 可在不同 python 版本之间轻松切换,实现 python 环境隔离,且支持自动激活和退出虚拟环境

Mac 下安装了 homebrew 之后使用 homebrew 安装 pyenv。(安装 homebrew,已安装请忽略)

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  1. 安装
brew install pyenv

遇到的问题:brew 下载 pyenv 时,不成功,发现最后报错:

原来是一个依赖包下载不成功readline

解决

用 brew 单独下载依赖包,就避免了找不到依赖版本的错误

brew install readline

根据自身环境,将下方添加环境变量到~/.zshrc 或者 ~/.bash_profile 中添加三行来开启自动补全。

export PYENV_ROOT=/usr/local/var/pyenv
export PATH="$PYENV_ROOT/bin:$PATH"
export PATH="$PYENV_ROOT/shims:$PATH"
if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

  1. 验证 验证安装是否成功:
pyenv

3.使用

# 1. 查看正在使用的python版本
$ pyenv version 
system (set by /usr/local/var/pyenv/version)

# 2. 查看系统支持的python版本
$ pyenv versions
* system (set by /usr/local/var/pyenv/version)
  3.6.0

## * 表示正在使用的python版本 system 表示系统自带的python

# 3. 查看可以安装的python有哪些
pyenv install -l
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4
  2.4.1
  2.4.2
  2.4.3
  2.4.4
  * * *

# 4. 安装指定版本的pyton
 pyenv install 3.6.0

# 5. pyenv local 设置当前目录使用的python版本
$ mkdir py3   && cd py3  && pyenv local 3.6.0

# 验证
# MacBookPro in /tmp/py3 
$ python -V
Python 3.6.0

# MacBookPro in /tmp/py3 
$ cd

$ python -V
Python 2.7.10

# 6. Python版本管理

pyenv global <version>  # 全局设置python版本为指定版本设置全局的 Python 版本通过将版本号写入 ~/.pyenv/version 文件的方式
pyenv local <version>   # 设置当前路径下python版本为指定版本设置 Python 本地版本通过将版本号写入当前目录下的 .python-version 文件的方式通过这种方式设置的 Python 版本优先级较 global 
pyenv shell <version>   # 设置当前shell窗口使用的python版本为指定版本设置面向 shell  Python 版本通过设置当前 shell  PYENV_VERSION 环境变量的方式这个版本的优先级比 local  global 都要高。–unset 参数可以用于取消当前 shell 设定的版本

使用pyenv切换Python 版本之后可以通过which python或者是python --version来查看是否生效

# 7.Python版本的优先级

shell > local > global

pyenv会从当前目录开始向上逐级查找.python-versiob文件直到根目录为止若找不到则使用global版本

# 8.Python卸载

pyenv isntall <version> # 安装版本号为<version>的Python
pyenv uninstall <version> #卸载版本号为<version>的Python

pyenv 能做什么

1. 基于每个用户更改全局Python版本
2. 对每个项目的Python版本提供支持
3. 允许通过环境变量覆盖Python版本
4. 一次搜索多个版本的Python

4.卸载 pyenv

Pyenv的设计为简单起见提供了方便的禁用和卸载方法
禁用Pyenv只需移除shell启动项中的pyenv init相关语句即可可回顾一下安装过程)。
彻底卸载Pyenv移除shell启动项中的pyenv相关语句并以rm -rf $(pyenv root)命令删除pyenv的root目录此外如果是采用brew install方式安装的话还需要执行brew uninstall pyenv来移除Homebrew中与Pyenv相关的元信息

5.安装 pyenv-virtualenv

pyenv-virtualenv:创建你的 python 虚拟环境,安装打开终端输入:pyenv install pyenv-virtualenv

# 虚拟环境
pyenv virtualenv 3.9.13 myenv  # 创建虚拟环境
pyenv activate myenv           # 激活环境
pyenv deactivate               # 退出环境
pyenv virtualenvs              # 列出所有虚拟环境
共收到 3 条回复 时间 点赞

我已经忘记了我怎么装的了。。。

homebrew 装了两个版本的 python

使用不同的版本号指定

可以考虑使用 conda,或者 miniconda,我就是用这个安装了不同的 python 版本

tester1.0 #3 · May 22, 2025 Author

使用版本管理工具(如 pyenv)

使用版本管理工具可以让你灵活管理和切换不同的 Python 版本。pyenv 是一个流行的 Python 版本管理工具,特别适合开发人员。它允许你在系统上安装多个 Python 版本,并在不同项目之间轻松切换。

你可以使用以下命令(针对 Unix 和 macOS 系统):

安装 pyenv(推荐方法,此脚本会自动安装若干插件,包括下文即将提到的 pyenv virtualenv)

curl https://pyenv.run | bash
安装完成后,按照终端中的提示更新你的 shell 配置文件(如.bashrc 或.zshrc),以便在启动 shell 时自动加载 pyenv。

# 查看所有支持安装的 Python 版本
pyenv install -l
# 安装 Python 2.7.17  3.8.2
pyenv install 2.7.17
pyenv install 3.8.2
# 指定全局使用 Python 2.7.17
pyenv global 2.7.17
# 指定 myproject 使用 Python 3.8.2
cd myproject
pyenv local 3.8.2
# 在当前 shell 中临时使用 Python 3.8.2
pyenv shell 3.8.2

这样,你就可以在不同的开发环境中灵活地使用不同的 Python 版本。

上面例子中在在 myproject 项目目录设置了 pyenv local 3.8.2 之后,后续进入该目录及其子目录时,所执行的 python 命令就是 3.8.2 版本,不需手动执行 activate;离开该目录之后,执行的的 python 命令就是系统安装的或者 pyenv global 指定的版本,不需要手动执行 deactivate。

上述几种用法中,优先级为:pyenv shell > pyenv local > pyenv global > system。即优先使用 pyenv shell 设置的版本,三种级别都没设置时才使用系统安装的版本。

pyenv virtualenv

前面提到 pyenv 要解决的是多个 Python 的版本管理问题,virtualenv 要解决的是同一个库的版本管理问题。但如果两个问题都需要解决呢?分别使用不同工具就很麻烦了,而且容易有冲突。为此,pyenv 引入了了 virtualenv 插件,可以在 pyenv 中解决同一个库的版本管理问题。

通过 pyenv virtualenv 命令,可以与 virtualenv 类似的创建、使用虚拟环境。但由于 pyenv 的垫片功能,使用虚拟环境跟使用 Python 版本的体验一样,不需要手动执行 activate 和 deactivate,只要进入目录即生效,离开目录即失效。

pyenv virtualenv 的用法和 pyenv 类似(使用上述安装 pyenv 方法会自动安装 virtualenv 插件):

# 分别安装基于 Python 2.7.17  Python 3.8.2 的虚拟环境
pyenv virtualenv 2.7.17 venv2
pyenv virtualenv 3.8.2 venv3
# 指定全局使用虚拟环境 venv2
pyenv global venv2
# 指定 myproject 使用虚拟环境 venv3
cd myproject
pyenv local venv3
# 在当前 shell 中临时使用虚拟环境 venv3
pyenv shell venv3
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up