Ubuntu 22.04 配置 Python 2 与 Python 3:安装、管理、版本切换与使用注意事项
1. 引言Ubuntu 22.04 LTSJammy 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-venvsudoaptupdatesudoaptinstallpython3.9 python3.9-venv python3.9-dev3.2 验证安装python3.9--version# 输出类似Python 3.9.184. 安装 Python 2由于官方仓库已移除 Python 2我们需要从universe仓库或第三方 PPA 安装。4.1 启用 universe 仓库并安装sudoadd-apt-repository universesudoaptupdatesudoaptinstallpython2如果上述方法失败可以尝试安装python2.7包sudoaptinstallpython2.74.2 验证 Python 2 安装python2--version# 输出类似Python 2.7.185. 管理多版本 Python使用update-alternativesupdate-alternatives是 Debian/Ubuntu 系统管理多个同类型命令如python,pip默认版本的官方工具。5.1 为python命令设置替代项注册 Python 3假设使用/usr/bin/python3sudoupdate-alternatives--install/usr/bin/python python /usr/bin/python31注册 Python 2sudoupdate-alternatives--install/usr/bin/python python /usr/bin/python22数字1和2是优先级数字越大优先级越高。这里设置 Python 2 优先级更高2 1但最终选择权在交互菜单。5.2 切换默认python命令版本运行以下命令进入交互式选择菜单sudoupdate-alternatives--configpython你会看到类似输出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 22选择 Python 3并按回车。5.3 验证切换结果python--version6. 虚拟环境管理隔离项目依赖强烈建议为每个项目使用虚拟环境避免全局包冲突。6.1 为 Python 3 创建虚拟环境使用venv模块Python 3.3 内置python3-mvenv myproject_envsourcemyproject_env/bin/activate# 激活后命令行提示符会变化6.2 为 Python 2 创建虚拟环境Python 2 需要使用virtualenv工具。先安装virtualenv用 Python 3 的 pip 安装pipinstallvirtualenv为 Python 2 项目创建虚拟环境virtualenv-ppython2 myproject_py2_envsourcemyproject_py2_env/bin/activate7. 包管理工具pip的版本管理每个 Python 版本都有其对应的pip。Python 3 的 pip通常为pip3命令。Python 2 的 pip需要手动安装或使用python2 -m pip。7.1 确保 Python 2 有 pipcurlhttps://bootstrap.pypa.io/pip/2.7/get-pip.py--outputget-pip.pysudopython2 get-pip.py安装后可以使用pip2命令或python2 -m pip。7.2 在虚拟环境中使用 pip在虚拟环境激活后直接使用pip命令即可它会自动关联到当前环境的 Python 版本。8. 使用注意事项与常见问题8.1 不要删除系统自带的 Python 3Ubuntu 的许多系统工具如 apt、gnome-terminal依赖/usr/bin/python3。删除或替换它可能导致系统不稳定。8.2 脚本的 Shebang 行在脚本开头明确指定解释器版本避免依赖模糊的#!/usr/bin/env python。用 Python 3#!/usr/bin/env python3用 Python 2#!/usr/bin/env python28.3 使用python -m执行模块运行模块时显式指定版本可以避免混淆python3-mpipinstallpackage# 为 Python 3 安装包python2-mpipinstallpackage# 为 Python 2 安装包8.4 检查当前环境在脚本或命令行中可以快速检查importsysprint(sys.version_info.major)# 输出 2 或 38.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 3virtualenv用于 Python 2。明确指定在脚本和命令中尽量使用python2、python3、pip2、pip3来避免歧义。保持系统稳定不要动系统自带的/usr/bin/python3。遵循这些实践你可以在 Ubuntu 22.04 上轻松驾驭双 Python 版本环境兼顾新项目开发和旧项目维护。