本文介绍如何在 Ubuntu 22.04 系统下,通过下载源码的方式手动编译并安装指定版本的 Python(以 Python 3.11 为例)。

1. 更新软件包并安装依赖

首先更新系统源,并安装编译 Python 所需的依赖库。

1
2
3
4
5
# 刷新软件包目录
sudo apt update

# 安装编译依赖
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libbz2-dev liblzma-dev sqlite3 libsqlite3-dev tk-dev uuid-dev libgdbm-compat-dev -y

2. 下载 Python 源码

从 Python 官网下载所需的源码包。

1
2
3
4
cd ~
wget https://www.python.org/ftp/python/3.11.5/Python-3.11.5.tgz
tar -xvzf Python-3.11.5.tgz
cd Python-3.11.5

3. 编译与安装

配置编译参数并开始安装。

1
2
3
4
5
6
7
8
9
# 配置安装路径和 SSL 支持
./configure --with-ssl --prefix=/usr/local/python3.11.5

# 编译
make

# 安装
# 使用 altinstall 而不是 install,以防止覆盖自带的 python3 命令
sudo make altinstall

Tips:
使用 make altinstall 而不是 make install。二者的一个重要区别在于,后者会创建符号链接,将 python3 等命令指向正在安装的新版本,这可能会破坏依赖系统 Python 的工具。

4. 配置环境变量

为了方便使用新安装的 Python,我们需要将其添加到 PATH 中。

方法一:创建软链接

将新版 python 的可执行文件链接到 /usr/local/bin

1
2
sudo ln -s /usr/local/python3.11.5/bin/python3.11 /usr/local/bin/python3.11
sudo ln -s /usr/local/python3.11.5/bin/pip3.11 /usr/local/bin/pip3.11

方法二:修改 PATH 环境变量 (推荐)

将 Python 的 binary 目录添加到系统 PATH。

  1. 编辑 /etc/profile 文件:
    1
    sudo vi /etc/profile
  2. 在文件末尾添加:
    1
    export PATH=/usr/local/python3.11.5/bin:$PATH
  3. 重新加载配置:
    1
    source /etc/profile

5. 使用 pip 安装库

安装完成后,可以使用对应版本的 pip 安装所需的第三方库。

1
pip3.11 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt