Ubuntu 22.04 配置 Python 2 与 Python 3:安装、管理、版本切换与使用注意事项
1. 引言
Ubuntu 22.04 LTS(Jammy Jellyfish)默认只预装了 Python 3。然而,在开发、运维或维护遗留项目时,我们常常需要同时使用 Python 2 和 Python 3。本文将详细介绍在 Ubuntu 22.04 上如何安全、高效地配置 Python 2 和 Python 3 共存环境,包括安装、版本管理、切换方法以及重要的使用注意事项。
2. 系统默认 Python 情况
在 Ubuntu 22.04 中:
- Python 3:系统默认安装,通常为
python3命令,对应的可执行文件是/usr/bin/python3。系统级的python命令可能不存在或指向python3。 - Python 2:不再默认安装。由于 Python 2 已于 2020 年 1 月 1 日停止官方支持,Ubuntu 22.04 移除了其默认安装包。
因此,我们需要手动安装 Python 2,并妥善管理两个版本,避免干扰系统关键组件。
3. 安装 Python 3(如未安装或需特定版本)
虽然系统已预装 Python 3,但你可能需要安装其他版本(如 3.8, 3.9, 3.10)。
3.1 安装特定版本的 Python 3
使用 apt 安装(推荐安装 python3.x 和 python3.x-venv):
sudo apt update
sudo apt install python3.9 python3.9-venv python3.9-dev
3.2 验证安装
python3.9 --version
# 输出类似:Python 3.9.18
4. 安装 Python 2
由于官方仓库已移除 Python 2,我们需要从 universe 仓库或第三方 PPA 安装。
4.1 启用 universe 仓库并安装
sudo add-apt-repository universe
sudo apt update
sudo apt install python2
如果上述方法失败,可以尝试安装 python2.7 包:
sudo apt install python2.7
4.2 验证 Python 2 安装
python2 --version
# 输出类似:Python 2.7.18
5. 管理多版本 Python:使用 update-alternatives
update-alternatives 是 Debian/Ubuntu 系统管理多个同类型命令(如 python, pip)默认版本的官方工具。
5.1 为 python 命令设置替代项
-
注册 Python 3(假设使用
/usr/bin/python3):sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1 -
注册 Python 2:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 2数字
1和2是优先级,数字越大优先级越高。这里设置 Python 2 优先级更高(2 > 1),但最终选择权在交互菜单。
5.2 切换默认 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 1 auto mode
1 /usr/bin/python2 2 manual mode
2 /usr/bin/python3 1 manual mode
Press <enter> to keep the current choice[*], or type selection number:
输入对应的数字(例如 1 选择 Python 2,2 选择 Python 3)并按回车。
5.3 验证切换结果
python --version
6. 虚拟环境管理:隔离项目依赖
强烈建议为每个项目使用虚拟环境,避免全局包冲突。
6.1 为 Python 3 创建虚拟环境
使用 venv 模块(Python 3.3+ 内置):
python3 -m venv myproject_env
source myproject_env/bin/activate
# 激活后,命令行提示符会变化
6.2 为 Python 2 创建虚拟环境
Python 2 需要使用 virtualenv 工具。
- 先安装
virtualenv(用 Python 3 的 pip 安装):pip install virtualenv - 为 Python 2 项目创建虚拟环境:
virtualenv -p python2 myproject_py2_env source myproject_py2_env/bin/activate
7. 包管理工具 pip 的版本管理
每个 Python 版本都有其对应的 pip。
- Python 3 的 pip:通常为
pip3命令。 - Python 2 的 pip:需要手动安装或使用
python2 -m pip。
7.1 确保 Python 2 有 pip
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
sudo python2 get-pip.py
安装后,可以使用 pip2 命令或 python2 -m pip。
7.2 在虚拟环境中使用 pip
在虚拟环境激活后,直接使用 pip 命令即可,它会自动关联到当前环境的 Python 版本。
8. 使用注意事项与常见问题
8.1 不要删除系统自带的 Python 3
Ubuntu 的许多系统工具(如 apt、gnome-terminal)依赖 /usr/bin/python3。删除或替换它可能导致系统不稳定。
8.2 脚本的 Shebang 行
在脚本开头明确指定解释器版本,避免依赖模糊的 #!/usr/bin/env python。
- 用 Python 3:
#!/usr/bin/env python3 - 用 Python 2:
#!/usr/bin/env python2
8.3 使用 python -m 执行模块
运行模块时,显式指定版本可以避免混淆:
python3 -m pip install package # 为 Python 3 安装包
python2 -m pip install package # 为 Python 2 安装包
8.4 检查当前环境
在脚本或命令行中,可以快速检查:
import sys
print(sys.version_info.major) # 输出 2 或 3
8.5 兼容性工具
对于需要同时支持 Python 2 和 3 的代码,可以考虑使用:
2to3:将 Python 2 代码自动转换为 Python 3。six:一个兼容库,帮助编写同时支持 Python 2 和 3 的代码。future:提供 Python 3 特性在 Python 2 中的 backport。
9. 总结
在 Ubuntu 22.04 上管理 Python 2 和 Python 3 的关键步骤:
- 安装:从
universe仓库安装 Python 2,系统已自带 Python 3。 - 管理默认版本:使用
update-alternatives --config python安全切换全局python命令。 - 项目隔离:为每个项目创建独立的虚拟环境(
venv用于 Python 3,virtualenv用于 Python 2)。 - 明确指定:在脚本和命令中,尽量使用
python2、python3、pip2、pip3来避免歧义。 - 保持系统稳定:不要动系统自带的
/usr/bin/python3。
遵循这些实践,你可以在 Ubuntu 22.04 上轻松驾驭双 Python 版本环境,兼顾新项目开发和旧项目维护。
更多推荐
所有评论(0)