核心原则
- 明确调用:永远不要依赖
python命令来运行你的脚本,因为它在不同系统上可能指向不同的版本,在代码中、在命令行里,都使用python2和python3。 - 使用虚拟环境:这是最重要的一点,为每个项目创建独立的虚拟环境,并在其中指定所需的 Python 版本,这样可以完美避免库版本冲突和系统环境污染。
- 包管理器分离:Python 2 和 Python 3 有自己的包管理器,
pip和pip3,它们管理的库是相互独立的,不会冲突。
Linux (以 Ubuntu/Debian 为例)
这是最简单的情况,因为大多数现代 Linux 发行版默认已经这样配置了。

安装两个版本
如果你的系统没有预装,可以这样安装:
# 更新包列表 sudo apt update # 安装 Python 3 (默认是最新版,如 3.10, 3.11) sudo apt install python3 python3-pip # 安装 Python 2 (通常是 2.7) sudo apt install python2 python2-pip
验证安装
# 检查版本 python2 --version # 应该显示 Python 2.x.x python3 --version # 应该显示 Python 3.x.x # 检查 pip 版本 pip2 --version pip3 --version
python 命令
- Ubuntu 18.04 及以后版本:默认
python命令指向python3,这是推荐的做法。 - 旧版 Ubuntu (如 16.04):默认
python命令指向python2。
如果你想让 python 指向 python3(推荐),可以执行以下操作(需要 update-alternatives 工具):
# 检查 python 是否在 alternatives 列表中 sudo update-alternatives --list python # 如果没有输出,需要手动添加 # 将 python2 和 python3 添加到 alternatives 列表 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 2 # 然后选择默认版本 sudo update-alternatives --config python # 在弹出的菜单中选择 python3 的序号(通常是 2)
最佳实践:即使设置了 python -> python3,在编写和分享代码时,也应在 shebang (文件首行的 ) 中明确指定版本。
# 对于 Python 2 脚本 #!/usr/bin/env python2 # 对于 Python 3 脚本 #!/usr/bin/env python3
macOS
macOS 自带 Python 2(通常在 /usr/bin/python),但这个版本是系统自带的,不应被修改或用于包安装,我们需要使用 Homebrew 来安装和管理 Python 3。

安装 Homebrew
如果还没有安装 Homebrew,打开终端,运行以下命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
使用 Homebrew 安装 Python 3
Homebrew 不会覆盖系统自带的 Python 2,它会将 Python 3 安装在 /usr/local/opt/python 或 /opt/homebrew/opt/python (Apple Silicon) 等位置。
# 安装最新的 Python 3 brew install python
安装完成后,Homebrew 会自动创建一些链接:
python3命令可用。pip3命令可用。python命令通常指向python3(通过/usr/local/bin/python这样的软链接)。
验证安装
# 检查路径和版本 which python # 应该指向 /usr/local/bin/python 或 /opt/homebrew/bin/python python --version # 应该显示 Python 3.x.x which python2 # 应该指向 /usr/bin/python2 (系统自带) python2 --version # 应该显示 Python 2.7.x which pip3 # 应该指向 /usr/local/bin/pip3 pip3 --version
macOS 的特殊情况:
- 系统 Python 2 (
/usr/bin/python2):这是系统自带的,绝对不要用pip2在这里安装任何包,否则会破坏系统。 - Homebrew Python 3 (
/usr/local/bin/python3):这是你用来开发的主要 Python 环境,所有的包都应该用pip3安装在这里。
Windows
Windows 的情况稍微复杂一些,因为它不使用 shebang,而是通过文件后缀名(.py)关联到解释器。
安装 Python 3
从 Python 官网 下载并安装最新的 Python 3。在安装界面,务必勾选 "Add Python 3.x to PATH",这是最关键的一步!
安装完成后,你可以直接在命令行使用 python 和 pip 命令,它们都默认指向 Python 3。
安装 Python 2
从 Python 官网 下载并安装 Python 2.7。同样,在安装界面,务必勾选 "Add Python 2.7 to PATH"。
安装完成后,你的系统 PATH 环境变量中会包含 Python 2 和 Python 3 的路径,由于 Python 3 的路径通常在 Python 2 之后,python 命令会优先找到 Python 3。
验证和解决冲突
打开新的命令行窗口,验证:
# 检查版本 python --version # 应该显示 Python 3.x.x python2 --version # 应该显示 Python 2.7.x py --list # py.exe 是 Python 启动器,会列出所有已安装的版本 # 检查 pip 版本 pip --version # 应该是 Python 3 的 pip pip2 --version # 应该是 Python 2 的 pip
问题:python 命令指向了 Python 2,说明 PATH 中 Python 2 的路径在 Python 3 的前面,你需要手动调整系统环境变量。
解决 PATH 冲突:
- 在 Windows 搜索栏中搜索“编辑系统环境变量”并打开它。
- 点击“环境变量...”按钮。
- 在“系统变量”区域,找到名为
Path的变量,选中它并点击“编辑”。 - 在变量值列表中,找到 Python 2 和 Python 3 的条目(
C:\Python27和C:\Python39)。 - 将 Python 3 的条目移动到 Python 2 的条目上方,然后点击“确定”保存所有设置。
- 关闭所有已打开的命令行窗口,重新打开一个新的,再次验证
python --version。
最重要的实践:虚拟环境
无论你使用哪个操作系统,虚拟环境都是管理项目依赖的终极解决方案,它可以为每个项目创建一个隔离的 Python 环境。
安装 virtualenv 工具
virtualenv 可以创建与 Python 版本无关的隔离环境。
# 使用 pip3 安装 virtualenv pip3 install virtualenv
为项目创建和使用虚拟环境
假设你要创建一个需要 Python 2 的旧项目和一个需要 Python 3 的新项目。
项目 A (需要 Python 2)
# 1. 创建项目文件夹 mkdir my_project_py2 cd my_project_py2 # 2. 使用 python2 创建虚拟环境 # -p /path/to/python2 指定了解释器路径 # 在 Linux/macOS 上,路径通常是 /usr/bin/python2 # 在 Windows 上,路径通常是 C:\Python27\python.exe virtualenv -p /usr/bin/python2 venv_py2 # 3. 激活虚拟环境 # Linux/macOS source venv_py2/bin/activate # Windows venv_py2\Scripts\activate # 4. 检查环境中的 Python 版本 # 现在的 (venv_py2) $ python --version 应该显示 Python 2.7.x # 5. 安装项目依赖 (这个包只会安装在 venv_py2 环境里) (venv_py2) $ pip install some-old-library # 6. 退出虚拟环境 (venv_py2) $ deactivate
项目 B (需要 Python 3)
# 1. 创建项目文件夹 mkdir my_project_py3 cd my_project_py3 # 2. 使用 python3 创建虚拟环境 (通常可以省略 -p,因为默认就是系统 python3) virtualenv -p /usr/bin/python3 venv_py3 # 3. 激活虚拟环境 source venv_py3/bin/activate # Linux/macOS # venv_py3\Scripts\activate # Windows # 4. 检查环境中的 Python 版本 # (venv_py3) $ python --version 应该显示 Python 3.x.x # 5. 安装项目依赖 (venv_py3) $ pip install some-new-library # 6. 退出虚拟环境 (venv_py3) $ deactivate
| 操作系统 | Python 2 命令 | Python 3 命令 | 包管理器 | 核心建议 |
|---|---|---|---|---|
| Linux | python2 |
python3 |
pip2, pip3 |
使用 update-alternatives 让 python 指向 python3,并为每个项目创建 virtualenv。 |
| macOS | python2 (系统自带,慎用) |
python3 (Homebrew) |
pip2 (慎用), pip3 |
使用 Homebrew 管理 Python 3。永远不要在系统 Python 2 中安装包。virtualenv 是必须的。 |
| Windows | python2 |
python (或 python3) |
pip2, pip (或 pip3) |
安装时务必勾选 "Add to PATH",使用 py -2 和 py -3 是调用特定版本的可靠方式。virtualenv 是必须的。 |
遵循以上方法,你就可以在任何系统上优雅地实现 Python 2 和 Python 3 的共存,并保持开发环境的整洁和稳定。
