杰瑞科技汇

Ubuntu Python源码安装步骤有哪些?

为什么选择从源码安装 Python?

  1. 安装特定版本:Ubuntu 的官方软件源中可能没有你需要的最新 Python 版本(3.12),或者你需要一个较旧的稳定版本(3.8)。
  2. 开启/关闭特定功能:可以手动开启或禁用 Python 在编译时的一些可选功能(如 --enable-optimizations 优化性能,或 --without-pip 不安装 pip)。
  3. 深度定制:开发者可能需要修改 Python 源码进行调试或二次开发。
  4. 学习目的:了解 Python 的编译和安装过程。

详细安装步骤

我们将以安装 Python 3.12.0 为例,这个过程适用于其他版本,只需替换相应的版本号即可。

Ubuntu Python源码安装步骤有哪些?-图1
(图片来源网络,侵删)

第 0 步:准备工作(非常重要!)

在开始之前,必须安装编译 Python 所需的所有依赖包,如果缺少它们,./configure 步骤会失败。

打开终端,执行以下命令:

# 更新软件包列表
sudo apt update
# 安装编译所需的工具和库
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev libbz2-dev

命令解释

  • build-essential:包含了 gcc, make, autoconf 等基础编译工具。
  • zlib1g-dev, libncurses5-dev, :这些都是 Python 源码中某些模块(如 zlib, sqlite, readline)在编译时所需要的开发头文件和库。

第 1 步:下载 Python 源码

从 Python 官方网站下载源码压缩包,我们使用 wget 命令下载。

Ubuntu Python源码安装步骤有哪些?-图2
(图片来源网络,侵删)
# 创建一个用于存放源码的目录
mkdir ~/python_src
cd ~/python_src
# 下载 Python 3.12.0 的源码(请访问 https://www.python.org/downloads/ 获取最新链接)
wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz
# 如果下载了 .tar.xz 格式,使用以下命令解压
# tar -xf Python-3.12.0.tar.xz
# 解压 .tgz 文件
tar -xzf Python-3.12.0.tgz
# 进入解压后的目录
cd Python-3.12.0

第 2 步:配置编译选项

这是最关键的一步。configure 脚本会检查你的系统环境,并根据你指定的选项生成 Makefile。

最推荐的做法是将 Python 安装到用户目录~/python3.12,这样可以避免覆盖系统自带的 Python(通常是 Python 3.x),也无需 sudo 权限。

# 定义一个安装路径变量,方便后续使用
INSTALL_PATH=~/python3.12
# 执行 configure 脚本
# --prefix 指定安装路径
# --enable-optimizations 可以优化 Python 的性能,但会显著增加编译时间
./configure --prefix=$INSTALL_PATH --enable-optimizations

常用配置选项

  • --prefix=<path>:指定安装路径。强烈建议使用非系统路径,如 ~/opt/python3.12/usr/local/python3.12
  • --enable-optimizations:开启 PGO (Profile-Guided Optimization),生成性能更好的 Python 解释器,编译时间会变长(可能需要 2-3 倍),但推荐使用。
  • --with-ensurepip=install:确保安装 pip(默认行为)。
  • --enable-shared:编译成共享库(.so 文件),某些需要链接 Python 的 C 扩展可能需要这个选项。

如果配置成功,你会看到很多 checking ... for ... 的输出,最后显示 Thank you for using Python

Ubuntu Python源码安装步骤有哪些?-图3
(图片来源网络,侵删)

第 3 步:编译源码

使用 make 命令来编译源码,如果你的电脑有多个 CPU 核心,可以使用 -j 选项来加速编译。

# 使用所有可用的 CPU核心进行编译
# nproc 命令可以获取 CPU 核心数
make -j$(nproc)

这个过程可能会持续很长时间,从几分钟到半小时不等,具体取决于你的电脑性能。


第 4 步:安装编译好的 Python

编译完成后,执行 make install 将文件安装到你在 configure 阶段指定的目录中。

# 无需 sudo,因为我们安装在用户目录下
make install

安装完成后,你会在 ~/python3.12/bin 目录下找到 python3.12pip3.12 等可执行文件。


第 5 步:配置环境变量

为了让系统能够直接使用新安装的 Python,你需要将它的 bin 目录添加到系统的 PATH 环境变量中。

临时生效(仅当前终端会话)

# 将这行添加到 ~/.bashrc 或 ~/.zshrc 文件中,使其永久生效
export PATH="$HOME/python3.12/bin:$PATH"
# 使环境变量立即生效
source ~/.bashrc  # 如果使用 bash
# 或者
source ~/.zshrc   # 如果使用 zsh

永久生效(推荐)

  1. 打开你的 shell 配置文件。

    • 对于 Bash: nano ~/.bashrc
    • 对于 Zsh: nano ~/.zshrc
  2. 在文件末尾添加以下行:

    export PATH="$HOME/python3.12/bin:$PATH"

    注意:请将 $HOME/python3.12 替换为你自己的实际安装路径。

  3. 保存并关闭文件(在 nano 中是 Ctrl+X, 然后按 Y, 再按 Enter)。

  4. 执行 source 命令让配置立即生效。


第 6 步:验证安装

打开一个新的终端窗口,验证新安装的 Python 是否生效。

# 检查 python 版本
python3.12 --version
# 应该输出: Python 3.12.0
# 检查 pip 版本
pip3.12 --version
# 应该输出类似: pip 23.2.1 from .../python3.12/lib/python3.12/site-packages/pip (python 3.12)
# 你也可以检查默认的 Python 版本
python --version
# 如果你的系统 Python 3 是默认的,它可能仍然指向旧版本

重要提示:为了避免与系统自带的 Python 冲突,我们始终推荐使用版本号后缀来调用新安装的 Python(如 python3.12, pip3.12)。


常见问题与解决方案

Q1: 如何管理多个 Python 版本?

当系统中存在多个 Python 版本时,使用 python3.10, python3.11, python3.12 这种方式已经足够清晰,但如果项目非常多,手动管理会很麻烦。

这时,强烈推荐使用 pyenvpyenv 是一个优秀的 Python 版本管理工具,它可以让你轻松地在不同项目间切换 Python 版本,而不会影响系统环境。

安装 pyenv:

curl https://pyenv.run | bash

然后按照它的提示将初始化命令添加到你的 shell 配置文件中(如 ~/.bashrc)。

使用 pyenv 安装 Python:

# 安装 Python 3.12
pyenv install 3.12.0
# 为当前目录设置 Python 版本
pyenv local 3.12.0
# 全局设置 Python 版本
pyenv global 3.12.0
# 查看已安装的版本
pyenv versions

使用 pyenv 后,你甚至可以不用手动从源码编译,它内部也会调用 ./configure && make 等流程。

Q2: 编译时出现 ModuleNotFoundError: No module named '_ctypes' 错误

这通常是因为缺少 libffi-dev 依赖包,回到第 0 步,确保你已经安装了它:

sudo apt install libffi-dev

然后清理之前的编译文件,重新开始:

make clean
./configure ...
make
make install

Q3: pip 速度慢,如何换源?

国内用户使用 pip 安装包时,默认从 PyPI 下载会很慢,可以配置使用国内镜像源。

临时使用:

pip3.12 install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

设为默认: 创建或编辑 ~/.pip/pip.conf 文件(如果目录不存在,请先创建):

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn

这样之后,所有 pip 命令都会默认从这个镜像源下载。


从源码安装 Python 在 Ubuntu 上是一个清晰且可控的过程,关键在于:

  1. 安装所有编译依赖:这是成功的第一步。
  2. 使用 --prefix 指定非系统安装路径:避免破坏系统环境。
  3. 配置 PATH 环境变量:方便在命令行中使用新版本。
  4. 使用 pyenv 管理多版本:对于需要频繁切换 Python 版本的开发者来说是必备神器。

希望这份详细的指南能帮助你成功安装所需的 Python 版本!

分享:
扫描分享到社交APP
上一篇
下一篇