Ubuntu怎么通过apt安装Python 3.8并设为默认

Theo
Theo
发布时间:2026-11-08| 4人浏览过
原创

本文详细讲解在Ubuntu系统中通过官方apt及deadsnakes PPA源安装Python 3.8的完整步骤,并利用update-alternatives机制将其配置为系统默认命令,同时深入剖析依赖风险与安全回滚方案。

适用系统:Ubuntu 20.04 / 22.04 / 24.04 LTS 包管理工具:APT 版本管理工具:update-alternatives
Ubuntu怎么通过apt安装Python 3.8并设为默认

在 Ubuntu 系统中通过 apt 安装特定历史版本的 Python 3.8 并将其设为命令行默认版本,标准解决路径分为两步:首先借助 Ubuntu 原生仓库或社区公认的 ppa:deadsnakes/ppa 源,通过 apt install python3.8 获取完整的独立二进制及其扩展支持包;随后使用 Linux 官方标准版本管理工具 update-alternatives,为系统 python3(或 python)命令注册多个候选路径并指定优先级,从而完成默认版本的平滑指向。

一、操作前的系统版本确认与源选择

在直接执行安装指令前,先搞清楚当前 Ubuntu 的具体版本至关重要,因为不同 Ubuntu 发行版在官方主源中的 Python 策略有所不同:

  • Ubuntu 20.04 LTS (Focal Fossa):系统原生默认自带的就是 Python 3.8,其官方 Universe 源中已包含完整的 python3.8 软件包,无需额外添加第三方 PPA 即可直接 apt install。
  • Ubuntu 22.04 LTS (Jammy) 及 Ubuntu 24.04 LTS (Noble):系统默认版本分别为 Python 3.10 和 Python 3.12。在这些版本中,官方默认主源已不再收录 Python 3.8。因此,必须引入由 Ubuntu 核心开发者维护的 deadsnakes PPA 软件源,方可通过 apt 获取安全可靠的 Python 3.8 构建包。

打开终端,首先执行以下命令查看发行版及当前环境自带的 Python 版本信息:

# 检查 Ubuntu 发行版本信息
lsb_release -a

# 检查当前默认的 python3 版本
python3 -V
执行结果示例 如果是在 Ubuntu 22.04 上运行,你可能会看到 Description: Ubuntu 22.04.4 LTS 以及 Python 3.10.12。请记下这个系统自带的原生版本号(如 python3.10),后续配置回退保护机制时需要用到。
Ubuntu怎么通过apt安装Python 3.8并设为默认
图 1:Ubuntu 通过 apt 安装 Python 3.8 并配置默认版本的 5 步标准操作流程

二、通过 apt 安装 Python 3.8 及必要配套组件

确定环境后,即可开始配置软件源并安装 Python 3.8。若只安装单个主包,后续在使用 pip、编译 C 扩展或创建独立虚拟环境时极易遇到诸如 ensurepip is not available 或 Python.h: No such file or directory 的报错。因此,在安装时应一次性补齐模块支持包。

1. 添加 deadsnakes PPA 软件源并更新缓存

安装 software-properties-common 工具以确保 add-apt-repository 可用,随后将 deadsnakes 仓库加入系统并刷新包缓存:

# 1. 安装管理 PPA 的前置依赖
sudo apt update
sudo apt install -y software-properties-common

# 2. 导入 deadsnakes PPA 源(Ubuntu 20.04 用户可跳过此步)
sudo add-apt-repository ppa:deadsnakes/ppa -y

# 3. 刷新 APT 本地索引缓存
sudo apt update

2. 执行 APT 安装命令

通过 apt 安装 Python 3.8 主程序、头文件(dev)、虚拟环境工具(venv)以及分发支持组件(distutils):

# 安装 Python 3.8 及核心开发扩展包
sudo apt install -y python3.8 python3.8-venv python3.8-dev python3.8-distutils

安装完成后,系统内部已经在 /usr/bin/python3.8 生成了完全立即可用的二进制执行文件。我们可以通过直接指定版本号的方式测试其是否能够正常运行:

# 直接执行安装好的 3.8 二进制
python3.8 --version
终端输出验证 终端输出 Python 3.8.18(具体小版本号视当前源内最新补丁而定),证明 Python 3.8 已经成功安装在系统中。此时它与系统自带的 Python 彼此共存,互不干扰。

三、使用 update-alternatives 将 Python 3.8 设为默认

很多初学者在需要切换默认版本时,习惯于直接删除 /usr/bin/python3 并使用 ln -sf 强行链接到新版本。这种做法非常粗暴且不可控,极易在后续维护中遗留“幽灵软链”。

在 Ubuntu / Debian 体系中,官方提供的标准工具是 update-alternatives。该工具会在 /etc/alternatives/ 中创建受管软链,不仅支持基于权重的自动切换,还支持通过交互式菜单随时无损改回。

Ubuntu怎么通过apt安装Python 3.8并设为默认
图 2:update-alternatives 双层符号链接路由与版本调度机制原理

1. 将系统原生 Python 注册到底层候选中

为了保证日后可以随时切换回系统自带版本,我们必须先把系统原生的 Python(以 Ubuntu 22.04 自带的 Python 3.10 为例)注册进 alternatives,并赋予较低的优先级(例如 1):

# 语法:update-alternatives --install <链接路径> <主名称> <目标物理路径> <优先级>
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1

注:如果你的原生系统是 Ubuntu 24.04,请将上述命令中的 /usr/bin/python3.10 替换为你系统当前实际的 /usr/bin/python3.12。

2. 将刚安装的 Python 3.8 注册为高优先级

接着注册我们需要的 python3.8,将其优先级设置为更高的数值(例如 2):

# 注册 Python 3.8 并赋予更高的优先级 2
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 2

由于优先级 2 > 1,在自动模式(Auto mode)下,update-alternatives 会立即自动将 /usr/bin/python3 切换为指向 /usr/bin/python3.8。

3. 验证当前生效版本与交互式切换

执行常规版本查询,检查全局 python3 命令是否已默认解析为 3.8:

# 检查默认版本
python3 -V

# 输出示例:
Python 3.8.18

如果你希望在多个已注册版本之间手动指定,可执行交互式配置命令:

# 唤起交互式选择菜单
sudo update-alternatives --config python3

终端会输出类似如下的候选项列表,读者只需输入对应的编号(Selection number)按回车即可完成实时切换:

There are 2 choices for the alternative python3 (providing /usr/bin/python3).

  Selection    Path                  Priority   Status
------------------------------------------------------------
* 0            /usr/bin/python3.8     2          auto mode
  1            /usr/bin/python3.10    1          manual mode
  2            /usr/bin/python3.8     2          manual mode

Press <enter> to keep the current choice[*], or type selection number: 
Ubuntu怎么通过apt安装Python 3.8并设为默认
图 3:直接重定向系统 python3 的隐患分析与工程推荐的隔离方案对比

四、关键注意事项:系统底层依赖风险与更稳妥的替代方案

将全局的 /usr/bin/python3 强行设为 Python 3.8 虽能满足特定老旧脚本的运行需求,但在 Ubuntu 现代版本(如 22.04 / 24.04)上存在不可忽视的系统隐患。

1. 为什么直接修改全局 python3 会带来风险?

在 Ubuntu 操作系统中,很多关键运维与桌面工具本质上都是用 Python 编写的,包括但不限于:

  • apt 与 add-apt-repository(依赖专用编译的 apt_pkg.cpython-*.so C 扩展库);
  • lsb_release 与 ufw 防火墙前端脚本;
  • gnome-terminal 桌面终端应用。

这些系统级 Python 脚本的首行解释器声明通常为 #!/usr/bin/python3,且它们依赖的系统模块直接存放在 /usr/lib/python3/dist-packages/ 中。一旦你把全局 python3 切换为 3.8,当执行 sudo apt update 或添加源时,系统可能会抛出类似 ModuleNotFoundError: No module named 'apt_pkg' 的严重异常,甚至导致终端无法打开。

2. 两种更稳妥、更推荐的替代做法

方案 A:仅将无版本号的 python 命令设为 3.8(保留 python3)

如果你只是希望在终端中少敲一个数字、输入 python 就能调用 3.8,而让系统组件继续安全地使用其原生 python3,可以只针对 /usr/bin/python 建立软链或 alternatives:

# 仅将无版本号的 python 注册并指向 3.8
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1

# 验证:python 调用 3.8,而 python3 依旧保持系统原生版本
python -V   # 输出 Python 3.8.18
python3 -V  # 输出 Python 3.10.x(系统工具正常运作)

方案 B:基于 venv 创建专属隔离环境(生产最佳实践)

现代 Python 开发的业界共识是“系统归系统,项目归项目”。通过独立虚拟环境开发,既能完全享受 Python 3.8 环境,又绝不碰触任何系统软链:

# 1. 进入项目目录,使用 3.8 创建虚拟环境
python3.8 -m venv my_project_env

# 2. 激活虚拟环境
source my_project_env/bin/activate

# 3. 激活后,当前 shell 内的 python 和 python3 均自动默认指向 3.8
(my_project_env) $ python -V
Python 3.8.18
(my_project_env) $ pip install --upgrade pip

五、紧急回滚:如何彻底复原与卸载

如果在切换默认版本后发现系统工具出现兼容性异常,或者任务完成后想要还原系统初始状态,可以通过以下方式迅速恢复:

1. 快速切换回系统原生默认版本

# 重新运行交互配置,选择系统原生版本(如 python3.10 或 3.12)
sudo update-alternatives --config python3

2. 从 alternatives 管理库中注销并移除 Python 3.8

如果你不再需要让 3.8 参与默认版本轮选,可将其从候选池中注销。执行后系统会自动恢复原生版本作为唯一默认项:

# 从 alternatives 中注销 python3.8 项
sudo update-alternatives --remove python3 /usr/bin/python3.8

# 确认复原结果
python3 -V
Ubuntu怎么通过apt安装Python 3.8并设为默认
图 4:Ubuntu 安装与配置 Python 3.8 全流程速查与场景决策全景图

六、常见问题排查与问答

常见现象 / 报错 主要原因分析 具体解决方法
add-apt-repository: command not found 精简版系统或新装环境缺少常用的软件属性管理组件 执行 sudo apt update && sudo apt install -y software-properties-common 后重试。
ModuleNotFoundError: No module named 'apt_pkg' 修改了全局 python3,导致 apt 工具用 3.8 解释器加载原生版本的 C 扩展失败 执行 sudo update-alternatives --config python3 切回原生版本,或改用 python 别名方案。
python3.8 -m pip 提示未安装 pip apt 安装仅包含运行时核心,未内置独立 pip 组件 执行 curl -sS https://bootstrap.pypa.io/get-pip.py | sudo python3.8 单独安装对应版本的 pip。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。