Ubuntu 20.04与22.04安装Python 3.11的注意事项
针对Ubuntu 20.04与22.04两个长期支持版本,系统梳理安装Python 3.11的核心方案、关键差异、误区预防以及环境隔离的最佳实践。
在 Ubuntu 20.04 与 22.04 上安装非默认的 Python 3.11,核心目标是平稳引入新版本解释器,同时完全保护操作系统底层工具链不受干扰。本文梳理两个 LTS 系统的默认环境差异、可靠的安装流程、必须规避的系统破坏行为,以及后续配套模块与虚拟环境的管理要点。
一、系统基线差异:两代系统的默认版本背景
Ubuntu 的系统工具(例如包管理器 APT 的辅助模块、桌面组件、云镜像初始化工具 cloud-init 等)深度依赖系统自带的 Python 运行环境。在安装 Python 3.11 之前,明确系统的原生状态是避免故障的第一步。
| 操作系统版本 | 系统默认 Python 版本 | 官方 APT 默认源提供范围 | 引入 Python 3.11 的主要途径 |
|---|---|---|---|
| Ubuntu 20.04 LTS (Focal Fossa) | Python 3.8.10 | 3.8 系列为主 | deadsnakes PPA 或源码编译 |
| Ubuntu 22.04 LTS (Jammy Jellyfish) | Python 3.10.x | 3.10 系列为主 | deadsnakes PPA 或源码编译 |
在这两个系统里,官方软件仓库都没有将 Python 3.11 作为默认解释器提供。要获取预编译的二进制包,社区最成熟的方案是使用 deadsnakes PPA。由于 20.04 与 22.04 底层构建依赖与 glibc 版本存在代际差异,PPA 仓库针对两者的打包文件各自分立,不能把跨版本的软件包混用。
图 1:系统原生解释器与新增 Python 3.11 的空间隔离结构
二、标准安装步骤:通过 PPA 安装的正确流程
在生产与开发服务器中,直接添加经过广泛验证的 ppa:deadsnakes/ppa 是最稳妥的二进制安装方式。安装过程需要按顺序完成系统工具准备、源注册、元数据刷新和组件获取。
图 2:通过 deadsnakes PPA 安装 Python 3.11 的完整阶段步骤
1. 更新本地包并安装必要依赖
在配置外部仓库前,需要确保系统具备管理 PPA 的组件和最新的 CA 证书链:
sudo apt update
sudo apt install -y software-properties-common ca-certificates
2. 注册 deadsnakes 仓库并刷新缓存
运行以下指令将 PPA 源添加进系统的 APT 源列表中。该命令会自动下载并导入 GPG 签名公钥:
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update
3. 安装 Python 3.11 核心包与关联套件
不要只执行 apt install python3.11。在实际业务环境中,如果缺少虚拟环境模块与构建头文件,后续安装依赖库时经常报错。建议连同配套包一并安装:
sudo apt install -y python3.11 python3.11-venv python3.11-dev
4. 验证安装结果
检查可执行程序是否正确进入 /usr/bin,并验证输出:
python3.11 --version
which python3.11
三、核心禁忌:绝对不能碰的两大系统雷区
/usr/bin/python3 或使用 update-alternatives 将主解释器切换为 3.11,系统级包管理器(如 apt、add-apt-repository)将直接崩溃,产生类似 ModuleNotFoundError: No module named 'apt_pkg' 的严重故障。
图 3:篡改系统级符号链接导致核心包管理器损坏的机理
具体来看,需要重点注意以下两个行为边界:
- 严禁使用 update-alternatives 重定向全局 python3:许多网上教程建议通过
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1来改变系统默认命令,这在 Ubuntu 上是危险的做法。虽然它看起来方便了当前终端输入,但所有显式调用/usr/bin/python3的系统脚本都会被迫在 3.11 下执行,进而因为缺少python3-apt的 3.11 兼容包而瞬间崩溃。 - 不要使用 get-pip.py 强行覆盖全局 pip:避免在 root 权限下运行
python3.11 get-pip.py去劫持/usr/local/bin/pip或/usr/bin/pip。全局安装包容易与系统的 APT 打包版本在/usr/lib/python3/dist-packages发生文件污染。
四、模块支持与构建环境:不可忽视的配套包
只装主解释器并不等于准备好了完整的运行环境。在实际部署 Python 项目时,通常需要处理以下两类配套环境问题:
1. 为什么必须单独安装 python3.11-venv
在 Debian/Ubuntu 体系中,标准库的 venv 模块被剥离成独立包。如果直接运行 python3.11 -m venv myenv,系统会给出错误提示:
针对 Python 3.11,必须执行 sudo apt install python3.11-venv 才能补齐 ensurepip 及其底层轮子支持,否则无法正确生成带有独立 pip 的虚拟环境。
2. 为什么需要 python3.11-dev 与编译链
在 Python 3.11 下安装包含 C/C++ 扩展的第三方库(例如 uwsgi、较旧版本的科学计算轮子、需要本地编译绑定的驱动)时,编译器需要对应的头文件与静态库。如果未装 dev 包,pip install 在编译阶段就会抛出 fatal error: Python.h: No such file or directory。
如果业务涉及 C 扩展编译,安装以下组合可以大幅减少依赖构建问题:
sudo apt install -y python3.11-dev build-essential libssl-dev libffi-dev
五、规范的使用姿势:虚拟环境与工程隔离
保证 Ubuntu 系统安全与业务灵活性的核心方案是:全局系统保持默认不动,业务需求全部收敛在虚拟环境中。
创建并使用 Python 3.11 虚拟环境的完整流程如下:
# 1. 在项目目录中直接使用 python3.11 唤起 venv
python3.11 -m venv .venv
# 2. 激活虚拟环境
source .venv/bin/activate
# 3. 此时终端内的 python 与 pip 已经自然隔离并绑定至 3.11
which python
python --version
pip --version
在虚拟环境中,你可以自由更新 pip 和安装依赖库,所有变动仅作用于 .venv 文件夹内部,丝毫不会污染系统的 /usr/lib/ 目录,从源头上杜绝了运维事故。
六、决策排查清单:部署前的核对总结
在 Ubuntu 20.04 或 22.04 机器上操作 Python 3.11 时,可以对照以下决策矩阵核对配置方案:
图 4:Ubuntu 20.04 / 22.04 下 Python 3.11 维护决策矩阵
只要保持对操作系统默认环境的敬畏,牢记“通过 PPA 引入独立解释器、通过配套包补齐 venv/dev、通过独立虚拟环境承载业务”这三项原则,在 Ubuntu 20.04 和 22.04 上使用 Python 3.11 就可以做到既享受新版本带来的性能提升,又完全保持宿主机系统的长期稳定。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









