0x00 前言
每次部署总是会遇到 Python 版本问题,这里记录下在 Debian 10 或 Ubuntu 20.04 上编译安装 Python 3.10 的步骤。
PS: Ubuntu 22.04 LTS 默认已经是 Python 3.10 了,真好.jpg
0x01 安装依赖
首先更新 APT 软件源。
1 | sudo apt update |
然后安装软件包。
1 | sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev libbz2-dev pkg-config liblzma-dev sqlite3 tk-dev uuid-dev libgdbm-compat-dev |
0x02 编译
1. 下载并解压源代码
前往 Python 官网 即可获得 Python 源码下载链接。
1 | wget https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tar.xz |
下载太慢可以去 淘宝镜像 去下载。
1 | wget https://registry.npmmirror.com/-/binary/python/3.10.9/Python-3.10.9.tar.xz |
下载完成后解压源码并进入目录。
1 | tar -xvf Python-3.10.9.tar.xz |
2. 检查依赖并配置
PS: 此处的检查依赖和配置都是执行命令后自动检查和配置的,无误后会自动生成 Makefile 文件。
1 | ./configure --enable-optimizations --with-lto |
–enable-optimizations 用 PROFILE_TASK 启用以配置文件主导的优化(PGO)
–with-lto 在编译过程中启用链接时间优化(LTO)
开启 lto 后编译时间会有 可感知的延长,如果急用可以先取消,后面再进行二次编译。
使用这两项配置可优化 Python 性能
建议用 –enable-optimizations –with-lto (PGO + LTO)配置 Python,以便实现最佳性能。
来自 Python 官方文档 3.1.3. 性能选项
PS: 很多教程在编译时加了
--enable-shared
参数,但为了避免后续与原系统 Python 产生影响,最好避免使用该参数。
参考: 聊一聊 Python 安装中的 –enable-shared
3. 编译
1 | make -j4 |
-j
后面为编译线程数,可根据机器情况进行调整。
4. 安装
1 | sudo make altinstall |
使用 install
会直接替换当前 Python 的链接,所以使用 altinstall
防止对系统原 Python 造成影响,进而防止影响依赖 Python 的系统组件。
0x03 使用
执行 python3.10
指令,就可以使用新安装的 Python 3.10 了。
pip 也有是 pip3.10