Ubuntu From Scratch 安装 Python 实操指南
一 准备环境
- 更新索引并安装基础工具与编译链:
- sudo apt update && sudo apt upgrade -y
- sudo apt install -y build-essential checkinstall wget curl git
- 安装编译 Python 所需依赖库(按需精简,覆盖常见模块与 SSL/压缩/数据库等需求):
- sudo apt install -y libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libncurses5-dev libgdbm-dev liblzma-dev libffi-dev uuid-dev libc6-dev
- 说明:上述依赖用于确保 _ssl、bz2、readline、sqlite3、ffi、lzma、gdbm、ncurses、uuid 等标准库可用,避免后续 pip/第三方包编译失败。
二 从源码编译安装 Python
- 选择版本并下载源码(示例以 Python 3.10.12 为例,亦可替换为 3.11.x 等稳定版本):
- cd /usr/src
- sudo wget https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tgz
- sudo tar xzf Python-3.10.12.tgz && cd Python-3.10.12
- 配置构建(推荐启用优化并确保 pip 随装):
- ./configure --enable-optimizations --with-ensurepip=install
- 说明:–enable-optimizations 会进行 PGO/LTO 等优化,首次构建耗时更长;–with-ensurepip=install 确保安装时自带 pip。
- 编译与安装(并行编译加速,使用 altinstall 避免覆盖系统 python3):
- make -j $(nproc)
- sudo make altinstall
- 常见安装前缀为 /usr/local/bin,可执行文件通常为 python3.10、pip3.10。
- 验证安装结果:
- python3.10 --version
- python3.10 -m pip --version
- 提示:若磁盘空间或时间紧张,可去掉 --enable-optimizations 以显著缩短构建时间(运行时性能略降)。
三 设置默认版本与便捷使用
- 使用 alternatives 切换系统默认 python3(推荐,安全可控):
- sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 100
- 如需在多个已装版本间切换:sudo update-alternatives --config python3
- 直接使用版本化命令(最稳妥,避免替换系统默认解释器):
- 将 /usr/local/bin 加入 PATH(若不在默认 PATH 中):
- echo ‘export PATH=/usr/local/bin:$PATH’ >> ~/.bashrc && source ~/.bashrc
- 说明:在“From Scratch”最小化环境中,/usr/local/bin 可能未在 PATH 前列,显式加入可避免“command not found”。
四 创建虚拟环境与验证 pip
- 安装并使用 venv 隔离项目依赖:
- sudo apt install -y python3.10-venv
- python3.10 -m venv ~/venvs/myapp
- source ~/venvs/myapp/bin/activate
- python -m pip install --upgrade pip
- 在虚拟环境中验证:
- 退出虚拟环境:deactivate。
五 常见问题与排查要点
- 缺少依赖导致配置/编译失败:
- 典型缺失如 libffi-dev、libssl-dev、zlib1g-dev、libbz2-dev、libreadline-dev、libsqlite3-dev、liblzma-dev 等;按报错信息 apt 安装对应开发包后重新配置/编译。
- 覆盖系统 Python 的风险:
- 避免使用 make install,改用 make altinstall;如需设置默认 python3,优先用 update-alternatives 管理。
- 构建时间过长:
- 首次启用 --enable-optimizations 会显著增加构建时间;可临时去掉该选项以加快构建,后续按需再启用。
- pip 不存在或版本异常:
- 使用带 ensurepip 的配置(–with-ensurepip=install);或在已装解释器上执行 python3.10 -m ensurepip --upgrade。