Linux下怎么安装Python?Ubuntu与CentOS常用命令指南
针对Ubuntu与CentOS两大Linux主流发行版,系统讲解Python的安装命令、多版本并存方案、源码编译要点及虚拟环境隔离最佳实践,避免误破坏系统自带环境。
在 Linux 操作系统中安装 Python,核心并不是敲下一行简单的安装命令,而是在搞清楚当前发行版软件源特性的前提下,安全获取所需版本,并与系统底层依赖的 Python 环境划清界限。本文针对 Ubuntu(Debian系)与 CentOS / RHEL 系列发行版,完整梳理官方包管理器安装、指定高版本扩展以及源码编译安装的核心命令,同时给出规避系统崩溃的关键实践。
一、安装前的环境检查与核心安全原则
绝大多数现代 Linux 发行版均已默认预装了 Python 3。在执行任何安装或更新动作前,首先需要打开终端,检查系统内现存的 Python 版本及其路径:
# 检查默认 Python 3 版本
python3 --version
# 查看系统调用指向的具体二进制路径
which python3
执行后如果输出了类似 Python 3.10.12 或 Python 3.8.10 的信息,说明系统中已经具备可用的 Python 基础运行时。
关键警告:不要尝试卸载或强制替换系统自带的 /usr/bin/python3。在 Ubuntu 中,apt 包管理工具、桌面组件及网络配置脚本大量依赖该 Python 版本;在 CentOS / RHEL 中,yum 和 dnf 更是直接由 Python 编写。强行替换或重定向系统默认软链接,将直接导致包管理器瘫痪甚至系统无法正常引导。
二、Ubuntu 系统安装 Python 常用命令指南
Ubuntu 依托 Debian 的 apt 软件包管理系统。在 Ubuntu 上安装 Python 主要有两种方式:直接安装官方源默认版本,或通过广受认可的 deadsnakes PPA 安装指定的新版本。
1. 官方软件源直接安装(推荐日常开发)
如果你只需要使用当前 Ubuntu 发行版所维护的稳定 Python 版本,直接通过官方软件源安装是最快捷、最稳定的选择。依次执行以下命令:
# 1. 更新本地软件包索引
sudo apt update
# 2. 安装 Python3 基础解释器、pip 包管理器以及虚拟环境模块
sudo apt install -y python3 python3-pip python3-venv
# 3. 验证安装成果
python3 --version
pip3 --version
这里特别强调必须显式声明 python3-venv。在 Debian/Ubuntu 体系中,标准库中的 venv 模块被单独剥离为一个包;若不安装,后续执行 python3 -m venv 命令时会提示 The virtual environment was not created successfully because ensurepip is not available 错误。
2. 使用 deadsnakes PPA 安装指定或更新的 Python 版本
当系统官方源提供的版本落后于项目要求(例如在 Ubuntu 20.04 LTS 上需要使用 Python 3.11 或 3.12),可以通过 Ubuntu 社区维护的 deadsnakes PPA 仓库安装:
# 1. 安装管理 PPA 必备的系统工具包
sudo apt install -y software-properties-common
# 2. 将 deadsnakes PPA 添加至软件源列表
sudo add-apt-repository ppa:deadsnakes/ppa
# 3. 更新索引并安装目标版本(以 Python 3.12 为例)
sudo apt update
sudo apt install -y python3.12 python3.12-venv python3.12-dev
# 4. 验证新安装的版本
python3.12 --version
通过这种方式安装后,系统中会保留原有的 python3,并同时新增一个具名二进制文件 python3.12,二者并存互不干扰,兼顾了系统稳定性与开发新特性的需求。
三、CentOS 与 RHEL 系列系统安装 Python 常用命令指南
CentOS / RHEL 体系下的包管理策略更加稳固保守。在处理该类系统时,首先必须区分 CentOS 7 与现代版本(CentOS Stream 8/9、Rocky Linux、AlmaLinux),两者的包管理器及软件源机制存在明显差异。
1. CentOS 8 / Stream / Rocky Linux / AlmaLinux 安装命令
现代 RHEL 衍生版采用 dnf 作为核心包管理器,并通过 AppStream 模块流提供不同版本的软件支持:
# 1. 检查本地 AppStream 中包含的 Python 模块流
sudo dnf module list python*
# 2. 直接安装系统默认的 Python 3 基础包与 pip
sudo dnf install -y python3 python3-pip
# 3. 若需要特定版本(如 AppStream 内提供的 python3.11)
sudo dnf install -y python3.11 python3.11-pip
# 4. 确认版本
python3 --version
python3.11 --version
通过 DNF 模块流安装的 Python 会自带完整的 venv 模块,无需像 Ubuntu 一样单独附加 -venv 软件包。
2. CentOS 7 遗留系统安装指南
CentOS 7 系统生命周期已终止,且官方源仅默认集成 Python 2.7。要在 CentOS 7 下安装 Python 3,必须先配置 EPEL(Extra Packages for Enterprise Linux)扩展源:
# 1. 安装 EPEL 企业级扩展源
sudo yum install -y epel-release
# 2. 安装 EPEL 中维护的 Python 3.6
sudo yum install -y python3 python3-pip
# 3. 验证命令
python3 -V
3. 通用高阶方案:源码编译安装指定高版本 Python
如果由于特定需求,CentOS 现有的软件源中均无法提供目标高版本(例如在 CentOS 上需要使用最新的 Python 3.12),则可以通过源码编译安装。源码编译安装能够完全适配宿主机硬件架构,并且不会与原有包管理器发生冲突。
第一步:安装编译依赖与构建工具(这一步至关重要,缺少特定依赖会导致编译出的 Python 缺少 SSL 或 SQLite 支持):
# CentOS / RHEL 安装基础编译依赖
sudo yum groupinstall -y "Development Tools"
sudo yum install -y openssl-devel bzip2-devel libffi-devel zlib-devel readline-devel sqlite-devel wget
第二步:下载、解压并配置源码:
# 下载目标版本源码包
wget https://www.python.org/ftp/python/3.12.3/Python-3.12.3.tgz
# 解压并进入源码目录
tar -zxvf Python-3.12.3.tgz
cd Python-3.12.3
# 配置构建参数(--enable-optimizations 开启编译期优化,耗时稍长但运行效率更高)
./configure --enable-optimizations
第三步:编译并使用 altinstall 进行安全安装:
# 利用多核加速编译(此处以4核为例)
make -j 4
# 注意:必须使用 altinstall,绝对不能使用 make install!
sudo make altinstall
为什么必须是 make altinstall?
如果执行标准的 make install,构建脚本会在 /usr/local/bin 目录下强行创建名为 python3 甚至 python 的通用二进制文件与链接。这极易被 $PATH 环境变量优先捕获,进而篡改系统调用,导致依赖系统特定 Python 版本的 yum 产生语法兼容性报错。而 make altinstall 只会生成带具体版本号的文件(如 python3.12),完全保留原有系统调用的独立性。
四、验证安装结果与虚拟环境隔离最佳实践
完成 Python 安装后,建议通过以下标准命令核实解释器与包管理器的就绪状态:
# 确认具体可执行文件的绝对路径
which python3.12
# 预期示例输出:/usr/local/bin/python3.12 或 /usr/bin/python3.12
# 确认版本号
python3.12 -V
# 预期示例输出:Python 3.12.3
# 检查对应 pip 版本
python3.12 -m pip --version
# 预期示例输出:pip 24.0 from .../site-packages/pip (python 3.12)
现代 Linux 下的关键准则:使用 venv 隔离项目依赖
在较新的 Linux 系统(如 Ubuntu 23.04+、Debian 12+)中,直接执行 pip3 install <package> 通常会被拦截并报错:error: externally-managed-environment。这是遵循 Python 官方 PEP 668 规范的设计,旨在防止用户随意通过 pip 写入全局 /usr/lib/python3.x/site-packages,进而破坏操作系统底层的依赖版本。
日常项目开发中,规范的标准姿势是创建独立的虚拟环境:
# 1. 切换至项目所在工作目录
cd /home/user/my_project
# 2. 为当前项目初始化专属虚拟环境(以目标 python3.12 为例)
python3.12 -m venv .venv
# 3. 激活虚拟环境
source .venv/bin/activate
# 4. 激活后,终端提示符前缀会显示 (.venv)
# 此时安装第三方库完全受限于项目目录,安全无污染
pip install requests flask
# 5. 退出虚拟环境
deactivate
五、常见问题排查与避坑要点
-
问题一:源码编译后运行 pip 提示
ssl module in Python is not available原因:在执行
./configure前,系统中未安装 OpenSSL 开发头文件。修复方法:CentOS 下执行sudo yum install -y openssl-devel,Ubuntu 下执行sudo apt install -y libssl-dev,随后重新进入 Python 源码目录完整执行./configure --enable-optimizations && make -j4 && sudo make altinstall。 -
问题二:Ubuntu 执行
python3 -m venv报错No module named ensurepip原因:Debian / Ubuntu 默认没有将 venv 组件打包进基础 python3 包中。执行
sudo apt install -y python3-venv(若使用指定版本则安装对应版本的包,例如sudo apt install -y python3.12-venv)即可修复。 -
问题三:误将
python软链接指向了新版本,导致yum无法运行原因:CentOS 7 的
/usr/bin/yum首行声明为#!/usr/bin/python,强依赖 Python 2.7 语法。修复方法:检查/usr/bin/python的真实指向,若被修改,将其重新指向原有的python2.7:sudo ln -sf /usr/bin/python2.7 /usr/bin/python。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













