Python 环境配置:如何安装与管理多个 Python 版本
为什么需要管理多个 Python 版本
在实际开发中,你可能会遇到以下场景:手头有一个老项目需要 Python 2.7 运行,而新项目要求 Python 3.11;或者某个依赖库只支持特定版本的 Python。如果把所有项目都塞进同一个 Python 环境,版本冲突会让人焦头烂额。
本文将详细介绍在不同操作系统下安装和管理多个 Python 版本的方法,帮助你搭建一个干净、灵活的 Python 开发环境。
在 Windows 上管理多个 Python 版本
使用 Python 启动器(推荐)
Windows 从 Python 3.3 开始自带 py.exe 启动器,这是管理多版本最简单的方式。安装 Python 时,务必勾选底部的 Add Python to PATH 选项。
安装不同版本的 Python
- 访问 Python 官网(python.org),分别下载需要的版本安装包。
- 运行安装程序,选择
Customize installation。 - 勾选
Add Python to PATH(这一步至关重要)。 - 选择安装位置:建议将不同版本安装在统一目录下,例如
C:\Python\目录下放置Python310、Python39、Python27等子文件夹。
安装完成后,py.exe 会自动检测系统中所有已安装的 Python 版本。
使用启动器指定版本运行
# 运行最新版本的 Python
py
# 指定主版本运行(优先使用该主版本的最新版)
py -3
py -3.10
# 指定具体版本完整号
py -3.10.8
py -3.9.13
# 运行脚本时指定版本
py -3.10 myscript.py
py -3.9 -m pip install requests
查看所有已安装版本
py --list
输出会显示类似这样的结果,显示系统中所有可用的 Python 版本及其优先级:
Installed Pythons found by py Launcher for Windows
----------------------------------------------------------------
3.10.8 C:\Python\Python310\python.exe *
3.9.13 C:\Python\Python39\python.exe
3.8.10 C:\Python\Python38\python.exe
2.7.18 C:\Python\Python27\python.exe
星号(*)表示默认版本,可以加上 -0 参数查看更详细的信息。
在 macOS 上管理多个 Python 版本
使用 Homebrew 安装
macOS 自带一个系统级的 Python(通常用于系统工具),但开发者一般会另外安装自定义版本的 Python。推荐使用 Homebrew 包管理器来管理。
安装 Homebrew(如果尚未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
**使用 brew 安装 Python**
```bash
# 安装最新版的 Python 3
brew install python
# 安装指定版本的 Python(以 Python 3.9 为例)
brew install python@3.9
# 链接已安装的特定版本
brew link python@3.9 --force
```
每个通过 Homebrew 安装的 Python 都会放在 `/usr/local/Cellar/python/` 目录下,可执行文件位于 `/usr/local/bin/`。由于 Homebrew 的 bin 目录在 PATH 中优先级较高,`python` 和 `pip` 命令会自动指向通过 brew 安装的最新版本。
**查看已安装的所有 Python 版本**
```bash
ls /usr/local/Cellar/python@*/
ls /opt/homebrew/Cellar/python@*/ # Apple Silicon Mac
```
---
## 使用 pyenv 管理多版本(跨平台推荐)
`pyenv` 是一个专门用于管理多个 Python 版本的工具,支持 Linux、macOS 和 Windows(通过 WSL)。它让你可以在不同项目之间轻松切换 Python 版本,且不会影响系统自带的 Python。
### 在 macOS 上安装 pyenv
**通过 Homebrew 安装**
```bash
brew update
brew install pyenv
```
**配置 Shell 环境**
将以下内容添加到 `~/.zshrc` 或 `~/.bash_profile` 文件末尾:
```bash
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
使配置生效
source ~/.zshrc # 如果使用 zsh
source ~/.bash_profile # 如果使用 bash
在 Linux/WSL 上安装 pyenv
安装依赖包
sudo apt update
sudo apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncurses5-dev libncursesw5-dev xz-utils tk-dev
安装 pyenv(官方推荐方法)
curl https://pyenv.run | bash
将自动添加到你的 Shell 配置文件中。完成后重启终端或运行 exec $SHELL`。
### 使用 pyenv 安装和管理版本
**查看可安装的 Python 版本**
```bash
# 列出所有可用的 Python 版本
pyenv install --list
# 只搜索以 3.10 开头的版本
pyenv install --list | grep "3.10"
```
**安装指定版本**
```bash
# 安装 Python 3.10.8
pyenv install 3.10.8
# 安装 Python 3.9.13
pyenv install 3.9.13
# 安装 Anaconda 发行版
pyenv install anaconda3-2023.03
```
安装过程中,pyenv 会从源码编译指定版本。编译完成后,该版本就纳入了管理范围。
**查看当前已安装的版本**
```bash
pyenv versions
```
输出示例:
```
* system (set by /Users/username/.pyenv/version)
3.8.10
3.9.13
3.10.8
anaconda3-2023.03
```
星号表示当前全局生效的版本。
**切换 Python 版本**
```bash
# 全局切换(对当前用户所有项目生效)
pyenv global 3.10.8
# 局部切换(仅当前目录及子目录生效,会在当前目录创建 .python-version 文件)
pyenv local 3.9.13
# 临时切换(仅当前终端会话生效)
pyenv shell 3.8.10
```
**卸载不需要的版本**
```bash
pyenv uninstall 3.8.10
```
---
## 使用 venv 创建隔离环境
安装多个 Python 版本后,每个项目最好使用独立的虚拟环境,避免包版本冲突。Python 3.3+ 自带 `venv` 模块,这是创建虚拟环境的标准方式。
**创建虚拟环境**
假设你在项目目录 `/project/myapp` 下:
```bash
cd /project/myapp
python -m venv venv
```
执行完毕后,会在当前目录生成一个 `venv` 文件夹,里面包含该环境的 Python 解释器和 pip 工具。
**激活虚拟环境**
```bash
# Linux/macOS
source venv/bin/activate
# Windows
venv\Scripts\activate
```
激活后,命令行提示符会显示环境名称,例如 `(venv) username@host:~$。此时运行 python 和 pip 都会指向虚拟环境内的版本,不再影响系统全局环境。
在虚拟环境中安装依赖
# 升级 pip
pip install --upgrade pip
# 安装项目依赖
pip install requests flask numpy
导出和安装依赖清单
# 导出当前环境的所有包及其版本
pip freeze > requirements.txt
# 在其他机器或新环境中安装所有依赖
pip install -r requirements.txt
退出虚拟环境
deactivate
使用 Conda 管理环境和依赖(可选方案)
如果你需要频繁处理科学计算、数据分析或机器学习项目,Anaconda 或 Miniconda 是另一个不错的选择。Conda 不仅管理 Python 版本,还能处理非 Python 依赖(如 CUDA、MKL 库)。
安装 Miniconda(轻量级版本)
从 conda 官网下载安装脚本,或使用命令行安装:
# Linux/macOS
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# Windows
# 下载安装包后双击运行
创建指定 Python 版本的环境
# 创建名为 myenv 的环境,Python 版本为 3.10
conda create -n myenv python=3.10
# 创建环境的同时安装常用包
conda create -n myenv python=3.10 numpy pandas matplotlib
激活和使用环境
# Linux/macOS
conda activate myenv
# Windows
conda activate myenv
管理环境
# 列出所有环境
conda env list
# 导出环境配置文件
conda env export > environment.yml
# 通过配置文件创建环境
conda env create -f environment.yml
# 删除环境
conda env remove -n myenv
验证配置是否成功
完成所有配置后,可以通过以下命令验证各工具是否正常工作:
# 查看 Python 默认版本
python --version
# 查看 pip 位置(确认是否指向正确的环境)
which pip # Linux/macOS
where pip # Windows
# 查看当前环境的包列表
pip list
# 如果使用 pyenv,查看当前生效的版本
pyenv version
# 如果使用 conda,查看当前环境
conda info --envs
常见问题与解决方案
问题一:命令找不到
如果输入 py、pyenv 或 python 后提示 "command not found",首先检查环境变量是否正确配置。确认相应的 bin 目录已经添加到 PATH 中,并重启终端或运行 exec $SHELL 使改动生效。
问题二:pip 安装的包找不到
这通常是因为你运行 pip 时处于错误的 Python 环境中。最好的做法是显式指定版本:python -m pip install package_name。如果你使用 pyenv,记得先激活目标版本的局部环境,或者在安装时指定完整路径。
问题三:Windows 下多个 Python 版本冲突
如果系统中有多个 Python 安装,建议使用 py -m pip 代替 pip,这样会通过启动器调用对应版本的 pip。对于 pip 的路径冲突,也可以直接删除环境变量中重复的 Python 路径,只保留 C:\Windows\ 和 C:\PythonXY\ 等必要的条目。
总结
管理多个 Python 版本的核心思路是:使用版本管理工具(pyenv、conda 或 Windows 启动器)控制全局版本,使用虚拟环境(venv 或 conda env)隔离项目依赖。这样既能在不同项目间自由切换,又能保持每个环境的独立和干净。
建议在项目开始时就创建好虚拟环境,并将 .python-version 或 environment.yml 加入版本控制系统,这样团队成员可以一键复现完全一致的开发环境。

暂无评论,快来抢沙发吧!