Linux下安装Python 3:Ubuntu/CentOS包管理器命令及源码编译

小岛来信
小岛来信
发布时间:2026-10-26 | 3人浏览过
原创

在 Linux 服务器与工作站环境中部署 Python 3 主要存在两条标准路径:直接使用发行版自带的包管理器(如 Ubuntu 的 APT 或 CentOS/RHEL 的 YUM 与 DNF)完成一键安装,或者从官方源码包进行本地编译安装。前者维护极其省心、依赖自动解析,适合绝大多数运维与日常开发环境;后者则允许自由安装任意特定小版本、启用定制化构建优化,并通过隔离安装命令防止冲击系统核心底层组件。

一、安装方案选型:包管理器 vs 源码编译

进入具体终端操作前,必须根据运行环境的具体约束做出理性选择。包管理器安装与源码编译并非简单的“新手与专家”之分,而是系统稳定性与版本控制权之间的权衡。

在主流 Linux 发行版中,操作系统自身的许多关键工具(如 Red Hat 系列的 YUM/DNF 包管理器、Ubuntu 系统的 cloud-init 与部分维护脚本)深度依赖系统预置的 Python 3 解释器。若盲目修改系统默认的 Python 软链接,很容易造成包管理工具崩溃。因此,明确两种方案的适用边界至关重要:

  • 包管理器安装(推荐绝大多数生产与标准场景):命令简练,软件源会自动解决所有动态链接库和 C 扩展依赖;后续可通过系统更新安全修复补丁。缺点是仓库提供的 Python 次版本由发行版生命周期决定,通常滞后于 Python 官方最新发布。
  • 源码编译安装(适用特定版本要求或性能诉求):允许用户在任何 Linux 机器上部署指定的 Python 小版本(如 Python 3.11 或 3.12),支持开启 PGO(Profile Guided Optimization)和 LTO(Link Time Optimization)提升运行时吞吐量。前提是必须提前装齐编译工具链,并务必使用隔离安装方式。
Linux下安装Python 3:Ubuntu/CentOS包管理器命令及源码编译
图 1:Linux 下 Python 3 部署方式特性矩阵与决策路径

二、Ubuntu / Debian 系列:使用 APT 包管理器安装

在 Ubuntu 20.04、22.04、24.04 及 Debian 系列系统中,APT(Advanced Package Tool)是最便捷的安装工具。

1. 查看当前环境与刷新软件源索引

首先登录终端,确认系统是否已自带 Python 3 解释器及其当前具体版本:

python3 --version

在执行安装前,务必同步更新本地的软件源索引缓存,以确保拉取到最新的包元数据:

sudo apt update

2. 安装 Python 3 主程序及必备配套组件

在 Ubuntu 体系中,解释器核心、包管理工具 pip 以及虚拟环境管理模块 venv 分属于不同的子软件包。建议在安装时一并装齐:

sudo apt install -y python3 python3-pip python3-venv

若需要在此环境中编译含有 C/C++ 绑定的第三方 Python 库(例如包含 Cython、numpy 源码构建依赖的应用),还应补充安装 Python C 头文件开发包:

sudo apt install -y python3-dev build-essential

3. 验证安装结果与版本确认

安装完成后,通过调用解释器与对应模块的帮助信息来确认二进制文件正确无误:

python3 --version
python3 -m pip --version

示例输出:

Python 3.10.12 (以 Ubuntu 22.04 LTS 官方源为例)
pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
补充说明:Ubuntu 下借助 Deadsnakes PPA 获取较新版本

如果所在 Ubuntu LTS 版本的默认源版本偏旧(如 20.04 默认仅自带 Python 3.8),但又希望使用 apt 进行管理,可以引入维护良好的社区源 deadsnakes:
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update && sudo apt install -y python3.11 python3.11-venv
此操作安装的命令实体为 python3.11,不会破坏系统原生 python3 软链接。

三、CentOS / RHEL 系列:使用 YUM 或 DNF 包管理器安装

CentOS 与 Red Hat Enterprise Linux(RHEL)按版本划分通常分为两大主流周期:CentOS 7 使用经典的 YUM 包管理器,而 CentOS Stream 8/9、RHEL 8/9 以及兼容发行版(AlmaLinux、Rocky Linux)则全面切换至 DNF 包管理器,并引入了模块流(AppStream Modules)。

1. CentOS 7 系统(YUM 管理器)

CentOS 7 官方基础软件库中预装的 Python 版本为极旧的 Python 2.7。要在 CentOS 7 下安装标准的 Python 3,建议首先启用企业版附加软件包(EPEL,Extra Packages for Enterprise Linux):

sudo yum install -y epel-release
sudo yum update -y
sudo yum install -y python3 python3-pip python3-devel

安装完毕后,CentOS 7 将在 /usr/bin/python3 提供 Python 3.6 环境。

2. CentOS Stream 8/9 与 RHEL 8/9(DNF 管理器)

在现代 Red Hat 体系中,DNF 提供了多模块流支持,允许系统中存在不同版本的 Python 软件包供按需切换:

# 检查当前系统提供的可用 Python 模块流
sudo dnf module list python*

# 安装系统默认的标准 Python 3 与 pip
sudo dnf install -y python3 python3-pip python3-devel

如果需要部署更新的版本(例如在 RHEL 9 上安装 Python 3.11),可以直接指定具体次版本包名:

sudo dnf install -y python3.11 python3.11-pip python3.11-devel

安装后即可直接通过独立的二进制命令 python3.11 与 pip3.11 进行调用,完全不与系统基础环境产生命名冲突。

Linux下安装Python 3:Ubuntu/CentOS包管理器命令及源码编译
图 2:Ubuntu 与 CentOS/RHEL 包管理器命令执行逻辑与安装路径

四、通用进阶:从官方源码编译安装 Python 3

当项目要求使用最新的 Python 版本(例如 Python 3.12.x),而系统官方软件源尚未收录时,源码编译是最权威且可控的解决方案。

步骤 1:安装前置编译工具链与底层开发库

Python 解释器自身是由 C 语言编写的,其标准库中的大量模块(如 ssl、hashlib、sqlite3、ctypes、gzip)依赖底层的 C 共享库。如果编译前未安装对应的头文件开发包,编译过程仍会强行结束,但在运行时导入这些模块时会抛出严重的缺失错误。

Ubuntu / Debian 系统安装依赖:

sudo apt update
sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev \
    libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev \
    libbz2-dev liblzma-dev wget curl make

CentOS / RHEL 系统安装依赖:

sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y openssl-devel bzip2-devel libffi-devel zlib-devel \
    readline-devel sqlite-devel xz-devel ncurses-devel gdbm-devel \
    wget make gcc

步骤 2:下载官方源码并校验解压

从 Python 官方发布服务器下载稳定源码包(以 Python 3.12.3 为例),并解压进入源码目录:

cd /tmp
wget https://www.python.org/ftp/python/3.12.3/Python-3.12.3.tar.xz
tar -xf Python-3.12.3.tar.xz
cd Python-3.12.3

步骤 3:执行配置脚本并开启关键优化选项

运行 ./configure 检查当前系统的编译环境。在此强烈建议附加两个生产级参数:

./configure --enable-optimizations --with-ensurepip=install
  • --enable-optimizations:开启 Profile Guided Optimization(PGO 基于性能分析的优化)与 LTO。该参数会让编译器运行一系列预设的测试用例来分析代码热点,从而生成吞吐性能提升约 10%~20% 的解释器二进制文件。
  • --with-ensurepip=install:在构建解释器的同时自动安装配套的 pip 工具。

步骤 4:多核编译与核心隔离安装(make altinstall)

编译过程十分消耗 CPU 资源,建议通过 nproc 命令检测当前主机 CPU 逻辑核心数,并使用 -j 参数开启多线程并行编译:

# 依据 CPU 核心数进行并行编译
make -j $(nproc)

编译成功完成后,执行安装命令时必须使用 altinstall,绝对不能使用 make install:

sudo make altinstall
重要警告:为什么必须执行 make altinstall 而非 make install?

如果在编译目录下执行 make install,系统会创建名为 python3 的软链接覆盖 /usr/local/bin/python3 甚至污染系统路径。一旦系统级工具链(如 Ubuntu 的 software-properties 或 RHEL 的 yum/dnf)调用了新版本的解释器,就会因为版本不兼容或标准库缺失引发严重的系统级不可用错误。 使用 make altinstall 会严格跳过默认别名创建,仅生成形如 python3.12 和 pip3.12 的版本专属二进制文件。

步骤 5:验证编译产物与独立运行

源码编译默认安装的目标前缀为 /usr/local。安装完成后,直接验证特定版本命令:

/usr/local/bin/python3.12 --version
/usr/local/bin/python3.12 -m pip --version

随后检查关键底层 C 扩展模块是否全部成功构建,特别是 SSL 证书模块:

/usr/local/bin/python3.12 -c "import ssl, sqlite3, ctypes; print('编译环境核心模块自检通过,OpenSSL版本:', ssl.OPENSSL_VERSION)"
Linux下安装Python 3:Ubuntu/CentOS包管理器命令及源码编译
图 3:源码编译构建完整生命周期与隔离安装规范

五、安装后配置与避坑排障指南

安装完成仅代表二进制可执行文件已正确部署于磁盘。在实际使用过程中,仍有数个高频发生的配置陷阱需要规避:

1. 绝不强行将 /usr/bin/python3 软链接修改为新版本

初学者常习惯执行 ln -sf /usr/local/bin/python3.12 /usr/bin/python3 以便在终端输入 python3 时使用新版本。这种做法具有破坏性。

CentOS 的 yum/dnf、Ubuntu 的 gnome-terminal 与系统补丁升级模块,均默认使用安装在 /usr/bin/python3 上的系统专属 Python。一旦强行替换,极大概率导致包管理工具因找不到老版本对应的系统 site-packages 模块而彻底报废。

正确方案:为新版本建立专属别名(在用户的 ~/.bashrc 中添加 alias py12='/usr/local/bin/python3.12'),或者直接使用新版本创建独立的虚拟环境。

2. 现代 Linux 的 PEP 668 与虚拟环境隔离

在较新的 Linux 系统(如 Ubuntu 23.04+、Debian 12+)中,直接执行 pip3 install [包名] 会遭遇报错:error: externally-managed-environment。这是 Python 社区推行的 PEP 668 保护机制,防止 pip 的全局写入与系统的 apt/dnf 软件包产生文件覆盖冲突。

处理此机制的标准做法永远是创建并激活虚拟环境(venv):

# 使用新安装的 Python 3.12 创建项目专属虚拟环境
/usr/local/bin/python3.12 -m venv myproject_env

# 激活虚拟环境
source myproject_env/bin/activate

# 在虚拟环境内自由安装三方库
(myproject_env) $ pip install requests fastapi uvicorn

3. 编译后 No module named '_ssl' 的根因与补救

如果在编译后运行 pip3.12 时出现类似 pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available 的警告,说明步骤 1 中的 OpenSSL 依赖库缺失或版本过旧。

补救操作:补齐系统开发包(Ubuntu 执行 sudo apt install libssl-dev,CentOS 执行 sudo dnf install openssl-devel),然后重新进入 Python 源码解压目录,重新执行 ./configure、make -j $(nproc) 与 sudo make altinstall 即可。

Linux下安装Python 3:Ubuntu/CentOS包管理器命令及源码编译
图 4:Python 3 环境落地后的四大避坑原则与自检清单

六、安装方案速查与对照总结

下表总结了在常见 Linux 环境下安装 Python 3 的命令选型与生命周期特征,便于在不同的运维或部署场景下快速参考:

操作系统 / 场景 推荐方式 核心执行命令 默认落地路径
Ubuntu / Debian APT 包管理器 sudo apt update && sudo apt install -y python3 python3-pip python3-venv /usr/bin/python3
CentOS 7 EPEL + YUM sudo yum install -y epel-release && sudo yum install -y python3 python3-pip /usr/bin/python3 (3.6)
CentOS / RHEL 8/9 DNF 模块流 sudo dnf install -y python3.11 python3.11-pip /usr/bin/python3.11
通用 Linux(定制版本) 源码编译 ./configure --enable-optimizations && make -j $(nproc) && sudo make altinstall /usr/local/bin/python3.X

总结而言,在现代 Linux 运维规范中,最稳妥的实践是:系统基础环境始终信任并保留发行版自带的包管理器版本;业务应用或需要较新语言特性的场景,则通过源码编译配合 make altinstall 进行版本隔离,并在具体业务目录中强制使用 python3.x -m venv 虚拟环境进行依赖封装。这种组合既保护了底层 Linux 操作系统的核心工具链安全,又赋予了应用程序最大的版本与生态自由度。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表