马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、先说结论:Ubuntu 22.04 装 Python 3.12 该走哪条路
Ubuntu 22.04 默认源里是 Python 3.10,很多新项目的 pyproject.toml 已经要求 3.11 / 3.12。急着用、要平版稳定:走 deadsnakes PPA 装官方包最省事;要特定小版本、要可控:走源码编译。
下面这条记录的是源码编译安装 3.12.2 的完整流程,以及每一步为什么这么写。文中所有命令都还原了原文被吞掉的空格(如 ./configure --enable-optimizations),可直接复制。
二、第 1 步:更新软件包列表
sudo apt update
三、第 2 步:装编译需要的依赖
Python 源码编译会用到 zlib、ssl、readline、sqlite3 这些库,不装齐会在编译后期报错,或者装完发现某一模块不可用(比如 pip 装包失败、sqlite3 模块 import 不了),所以这一步别省:
sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev
拆开看几个关键的:build-essential 提供 gcc/make、libssl-dev 给 HTTPS、libreadline-dev 给交互式命令行、tk-dev 给 tkinter、llvm 在部分版本里参与优化构建。
四、第 3 步:下载 3.12 源码
wget https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tgz
五、第 4 步:解压
tar xzf Python-3.12.2.tgz
六、第 5 步:编译并安装
cd Python-3.12.2
./configure --enable-optimizations
make -j$(nproc)
sudo make altinstall
四行命令各自的用处:
--enable-optimizations:开启 PGO 优化,代价是编译明显更慢(可能多花一倍时间),收益是运行更快。不着急的话加上,追求速度就去掉;
make -j$(nproc):按 CPU 核心数并行编译,$(nproc) 会被替换成核心数;
altinstall(关键):用它而不是 install,才会装成 python3.12 而不覆盖系统的 python3 软链接。 Ubuntu 22.04 的系统工具依赖 3.10,覆盖掉可能把 apt 连带弄坏——这是源码装 Python 最重要的一条纪律。
七、第 6 步:验证
python3.12 --version
输出 Python 3.12.2 即成功。同时确认系统 Python 没被动过:
python3 --version # 应仍是 Ubuntu 自带的 3.10.x
八、第 7 步:装 pip 并升级
apt install python3-pip
pip3 install --upgrade pip
这里用的是系统包管理器装的 python3-pip;升级到最新 pip 可以避免老版本 pip 在新包索引上下载失败。
九、真正该建环境的地方:venv
装好解释器只完成了一半,实际开发请用虚拟环境,不要往系统级 site-packages 里堆包:
python3.12 -m venv venv
source venv/bin/activate
python -V
pip install requests
十、几个会踩的坑
make 阶段报缺少某个 .h:回到第 2 步把对应 -dev 包装齐,然后重新完整跑一遍 configure + make(只补装不重编是无效的);
- 忘记用 altinstall:系统 python3 被覆盖,
apt / 系统脚本报 No module named;补救方式是卸载重装并存版本,别再覆盖;
- 只装了解释器没装 pip:用
python3.12 -m ensurepip 补一个内置 pip;
- 源码包放 /tmp 下编译:建议放到
/usr/local/src 这种持久目录,重启后 /tmp 可能被清空,Python 就只剩一个残影。
十一、一句话串起来
装依赖 → 下源码 → 解压 → ./configure --enable-optimizations → make -j$(nproc) → sudo make altinstall → python3.12 --version 验证。 记住 altinstall 不覆盖系统 Python 这一条,整套流程就稳了;日常开发在 venv 里跑,系统环境保持干净。
(本文由 qidao123.com企服评测-应用市场 编辑提示整理:示例基于 Ubuntu 22.04 与 GNU toolchain / OpenSSL 1.1 环境,适用于 Python 3.12 源码编译安装与虚拟环境搭建。) |