最佳实践 (强烈推荐)
这种方法的核心是:不直接使用 python 命令,而是明确使用 python2 和 python3。

步骤 1:检查系统当前状态
查看你的系统已经安装了哪些 Python 版本。
# 查看所有 python 可执行文件的位置 which python which python2 which python3 # 查看版本号 python --version python2 --version python3 --version
常见情况:
- 在现代 Linux 发行版(如 Ubuntu 20.04+, CentOS 8+)上,
python命令通常指向python3,而python2可能已经不被默认安装。 - 在一些旧系统或 macOS 上,
python可能默认指向python2.7。
步骤 2:安装 Python 3
如果你的系统没有 Python 3,请安装它,以 Ubuntu 为例:
# 更新软件包列表 sudo apt update # 安装 python3 及其包管理工具 pip3 sudo apt install python3 python3-pip
以 CentOS/RHEL 为例:

# 安装 EPEL 仓库(如果需要) sudo yum install epel-release # 安装 python3 及其 pip sudo yum install python3 python3-pip
步骤 3:设置命令别名 (Alias)
这是最关键的一步,让你能方便地在两个版本间切换,在你的 shell 配置文件中添加别名。
- 对于 Bash (最常见): 编辑
~/.bashrc文件 - 对于 Zsh: 编辑
~/.zshrc文件
打开文件:
# 使用 nano 编辑器 nano ~/.bashrc
在文件末尾添加以下内容:
# 为 Python 2 和 Python 3 设置明确的别名 alias python='python2' alias pip='pip2' # 如果你希望默认使用 Python 3,可以反过来设置 # alias python='python3' # alias pip='pip3' # 强制重新加载配置文件,使别名生效 source ~/.bashrc
重要提示:

- 不要轻易覆盖
python和pip的默认指向,很多系统工具和脚本依赖于python指向python2,强行改为指向python3可能导致系统不稳定。 - 最佳做法是让
python指向python2,因为python2是旧版,兼容性要求更高,对于新的项目,你将明确使用python3。
步骤 4:验证安装
打开一个新的终端窗口,或者执行 source ~/.bashrc 后进行验证。
# 检查 python 命令指向 python --version # 应该显示 Python 2.x python2 --version # 应该显示 Python 2.x python3 --version # 应该显示 Python 3.x # 检查 pip 命令指向 pip --version # 应该显示 pip 对应 Python 2.x pip2 --version # 应该显示 pip 对应 Python 2.x pip3 --version # 应该显示 pip 对应 Python 3.x # 测试安装包 pip install some-package-for-py2 # 会安装到 Python 2 的环境 pip3 install some-package-for-py3 # 会安装到 Python 3 的环境
步骤 5:为项目创建虚拟环境 (强烈推荐)
这是专业开发者的标准做法,可以完全隔离不同项目的依赖,避免版本冲突。
使用 Python 3 的 venv 模块创建虚拟环境:
# 创建一个名为 my_py3_project 的项目文件夹 mkdir my_py3_project cd my_py3_project # 使用 python3 创建虚拟环境 python3 -m venv venv # 激活虚拟环境 source venv/bin/activate # 激活后,你的命令行提示符前会出现 (venv) # 在这个环境中,python 和 pip 命令会自动指向 Python 3 (venv) $ python --version Python 3.x.x # 安装项目依赖 pip install requests # 退出虚拟环境 deactivate
使用 virtualenv 工具 (更灵活,可以创建 Python 2 的虚拟环境):
首先安装 virtualenv:
# 使用 pip3 安装,避免污染 Python 2 的环境 pip3 install virtualenv
创建并激活 Python 2 的虚拟环境:
mkdir my_py2_project cd my_py2_project # 使用 python2 创建虚拟环境 virtualenv -p /usr/bin/python2 venv_py2 # 指定 python2 的路径 # 激活 source venv_py2/bin/activate # python 和 pip 指向 Python 2 (venv_py2) $ python --version Python 2.7.x
使用 update-alternatives (高级,适用于 Linux)
这个工具是 Linux 用来管理多个同名可执行文件版本的标准方法,它比 alias 更系统化,但配置稍复杂。
安装 Python 2 和 Python 3
确保两个版本都已安装。
将 Python 注册到 update-alternatives
# 为 python2 注册 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 # 为 python3 注册 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2 # 注意:/usr/bin/python3.8 请替换成你系统上 python3 的实际路径
--install: 安装一个新的替代项。/usr/bin/python: 要管理的命令。/usr/bin/python2.7: 该命令的一个具体实现。1和2: 是优先级数字,数字越大,优先级越高,这里让python3优先级更高。
切换版本
现在你可以通过一个命令来切换默认的 python 版本。
# 查看可用的选项 sudo update-alternatives --config python # 系统会列出如下选项: # There are 2 choices for the alternative python (providing /usr/bin/python). # Selection Path Priority Status # ------------------------------------------------------------ # * 0 /usr/bin/python3.8 2 auto mode # 1 /usr/bin/python2.7 1 manual mode # 2 /usr/bin/python3.8 2 manual mode # Press <enter> to keep the current choice[*], or type selection number:
输入你想要的编号(1),然后按回车,python 命令就会立即切换到 python2.7。
恢复自动模式
如果你想恢复系统自动选择(通常是优先级最高的那个版本),可以运行:
sudo update-alternatives --auto python
注意: update-alternatives 修改的是系统级的 /usr/bin/python,可能会影响依赖它的系统脚本,使用时需谨慎。
针对 macOS 的 Homebrew 用户
如果你使用 Homebrew 安装 Python,它会自动处理好共存问题。
-
安装 Python 3:
brew install python
Homebrew 不会覆盖系统自带的 Python 2,它会将 Python 3 安装在
/usr/local/opt/python/bin/等位置。 -
使用命令:
python通常指向系统自带的 Python 2。python3指向 Homebrew 安装的 Python 3。pip通常指向系统自带的 pip2。pip3指向 Homebrew 安装的 pip3。
这与 方法一 的最佳实践完全一致,非常清晰和安全。
总结与建议
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 命令别名 | 简单、灵活、安全、不影响系统 | 需要手动配置别名 | 绝大多数用户的最佳选择,尤其适合个人开发和需要精确控制环境的场景。 |
update-alternatives |
系统级统一管理,切换方便 | 可能影响系统稳定性,配置稍复杂 | 需要在多个用户或服务间统一切换 Python 版本的 Linux 服务器环境。 |
| Homebrew | 自动处理,与 macOS 深度集成 | 仅限 macOS | macOS 用户使用 Homebrew 时的标准做法。 |
最终建议:
对于绝大多数开发者,采用方法一(命令别名 + 虚拟环境) 是最稳健、最不容易出错的方案。
- 保持
python指向python2,python3指向 Python 3。 - 使用
pip2和pip3分别管理对应的包。 - 为每个新项目创建独立的 Python 3 虚拟环境 (
python3 -m venv),在激活的环境中,python命令会临时指向 Python 3,实现完美隔离。
