Linux系统(Ubuntu/CentOS)命令行安装Python指令大全
全面解析在Ubuntu与CentOS Linux系统中通过命令行安装Python的指令与操作方法。涵盖系统包管理器安装、第三方扩展源、源码编译安全隔离及多版本管理避坑实践。
在 Linux 运维与开发工作中,安装与管理 Python 环境是最基础也最容易踩坑的环节。很多用户习惯在终端直接通过包管理器安装,却发现发行版自带的版本偏旧;而盲目覆盖系统原生的 python3 又会导致 Ubuntu 的 apt 或 CentOS 的 yum 基础命令崩溃。本文围绕 Ubuntu 与 CentOS 两大主流 Linux 发行版,完整整理从系统包管理器快速安装、扩展源获取指定版本,到源码编译安全隔离部署的全部命令行指令与实操要点。
一、Ubuntu 命令行安装 Python
Ubuntu 系统对 Python 支持相对友好,官方源维护更新及时。在安装前,建议首先核验当前系统自带的 Python 版本信息:
python3 --version
1. 官方仓库直接安装默认版本
在 Ubuntu 20.04、22.04 或 24.04 中,可以通过 apt 快速安装官方维护的稳定版本,同时安装配套的包管理器 pip 与虚拟环境模块 venv:
sudo apt update
sudo apt install -y python3 python3-pip python3-venv
执行完成后,使用以下指令检验对应工具链是否完备:
python3 -V
pip3 -V
2. 利用 deadsnakes PPA 安装指定版本
如果官方仓库中的版本无法满足软件运行库的要求,Ubuntu 社区广泛采用经过认证的 deadsnakes PPA 仓库来获取更新或特定版本(例如 Python 3.11 或 3.12),而无需手动编译:
# 1. 安装管理 PPA 所需的基础工具
sudo apt update
sudo apt install -y software-properties-common
# 2. 添加 deadsnakes PPA 软件源
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
# 3. 安装特定版本 Python 及其开发组件
sudo apt install -y python3.11 python3.11-venv python3.11-dev
安装完成后,系统内会保留原生 python3,并同时存在独立可调用的 python3.11 命令,两者互不冲突。
二、CentOS 命令行安装 Python
CentOS(特别是 CentOS 7 与 CentOS 8 / Stream)对系统底层工具绑定较深。CentOS 7 原生依赖 Python 2.7 维持 yum 运行,CentOS 8 依赖底层 Python 3.6 维系 dnf 运行。因此在此类系统中操作必须尤为谨慎。
1. CentOS 7 通过 EPEL 与 SCL 安装
在 CentOS 7 官方基础源中,直接安装 Python 3 仅需启用 EPEL 源:
# 启用 EPEL 扩展仓库
sudo yum install -y epel-release
sudo yum check-update
# 安装 Python 3 (通常为 3.6 版本) 及 pip
sudo yum install -y python3 python3-pip python3-devel
如果业务需要 Python 3.8 等更高版本,推荐使用 Software Collections (SCL) 方案,它可以在 /opt/rh 独立目录下安全运行高版本环境:
# 安装 SCL 工具包
sudo yum install -y centos-release-scl
# 安装目标版本 (以 Python 3.8 为例)
sudo yum install -y rh-python38
# 激活临时环境变量并测试
scl enable rh-python38 bash
python --version
2. CentOS 8 / Stream / Rocky Linux (通过 DNF 模块流)
在采用 DNF 管理的 CentOS 8 或 Rocky Linux / AlmaLinux 中,系统引入了模块流(AppStream),允许在保留系统默认解释器的同时,按模块切换并安装更高版本的应用流:
# 检查可用的 Python 模块流
sudo dnf module list python3*
# 安装特定版本的 Python 模块 (例如 Python 3.9)
sudo dnf module install -y python39
# 或者直接按包名安装
sudo dnf install -y python39 python39-devel python39-pip
三、通用方案:源码编译安全安装(精准控制与隔离)
当服务器无法连接外部第三方 PPA 源,或者生产环境需要特定微版本号并开启性能优化(如 PGO、LTO)时,源码编译是最纯粹可控的方案。为了不破坏操作系统的默认运行环境,源码安装务必遵守“独立目录配置”与“altinstall 编译写入”两大原则。
1. 安装底层编译依赖
Python 解释器由 C 语言写成,编译过程需要大量的开发头文件。如果依赖缺失,编译能够成功结束,但后续使用时会报错提示缺少 _ssl 或 _ctypes。请根据操作系统执行以下指令:
Ubuntu / Debian 环境:
sudo apt update
sudo apt install -y build-essential libssl-dev zlib1g-dev \
libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev \
libgdbm-dev libdb5.3-dev libbz2-dev libexpat1-dev liblzma-dev \
libffi-dev uuid-dev wget
CentOS / RHEL 环境:
sudo yum groupinstall -y "Development Tools"
sudo yum install -y openssl-devel bzip2-devel libffi-devel \
zlib-devel readline-devel sqlite-devel xz-devel wget
2. 下载官方源码与解压
进入 /usr/local/src 或临时目录,从 Python 官方 FTP 下载目标版本的源码归档文件:
cd /usr/local/src
# 以 Python 3.11.9 为例
sudo wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz
sudo tar -zxvf Python-3.11.9.tgz
cd Python-3.11.9
3. 配置编译参数与目录隔离
执行 configure 时,通过 --prefix 指定独立隔离的安装目录,通过 --enable-optimizations 开启 Profile Guided Optimization (PGO) 性能优化:
./configure --enable-optimizations --prefix=/usr/local/python3.11
4. 编译与安全写入(强调 altinstall)
在执行最终安装时,绝对不能使用 make install,而必须使用 make altinstall。make install 会自动创建名为 python3 的软链接覆盖系统路径,直接导致系统原生软件包管理工具报废;而 make altinstall 会在目标目录中仅生成带版本号的二进制文件(例如 python3.11),确保系统绝对安全。
# 利用多核加速编译 (-j 参数传入 CPU 核心数)
make -j $(nproc)
# 使用 altinstall 安全写入
sudo make altinstall
5. 建立全局可执行软链接
编译完成后,二进制可执行文件位于 /usr/local/python3.11/bin/。为了让全局终端直接使用 python3.11 指令,将其软链接至 /usr/local/bin(系统默认 PATH 路径):
sudo ln -s /usr/local/python3.11/bin/python3.11 /usr/local/bin/python3.11
sudo ln -s /usr/local/python3.11/bin/pip3.11 /usr/local/bin/pip3.11
最后执行版本命令验证安装结果:
python3.11 --version
pip3.11 --version
四、多版本共存与隔离使用最佳实践
当系统内同时存在多个 Python 版本时,随意切换默认全局符号链接可能带来不可预知的服务故障。更合理的工程实践是使用环境切换工具或项目级虚拟环境。
1. 使用 update-alternatives 管理 CLI 默认值
在 Debian/Ubuntu 及其衍生系统中,可以使用系统推荐的 alternatives 机制统一管理多版本切换优先级:
# 注册已有版本并设置优先级 (数值越大优先级越高)
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.11 2
# 手动交互式选择默认版本
sudo update-alternatives --config python3
注意:如果切换后发现系统基础指令(如 gnome-terminal 或 apt 脚本)报错,请重新执行上述命令切回原生默认版本。针对业务开发,最推荐的方式是直接通过具体的版本号命令或者创建虚拟环境。
2. 利用 venv 创建项目隔离环境
无论采用何种方式安装了 Python,在开展具体开发任务时,强烈推荐使用对应的 Python 解释器建立独立的虚拟环境:
# 使用指定版本创建虚拟环境 (例如 Python 3.11)
python3.11 -m venv ~/envs/myproject
# 激活虚拟环境
source ~/envs/myproject/bin/activate
# 此时在环境中,python 与 pip 命令已自动绑定该特定版本
python -V
pip install --upgrade pip
# 退出虚拟环境
deactivate
五、常见报错原因与排障指令
在 Linux 命令行安装和编译 Python 过程中,最容易出现的几类典型报错及其排查修复方法如下:
- 报错一:
No module named '_ssl'或pip is configured with locations that require TLS/SSL
原因分析:在执行源码./configure时,系统未安装 OpenSSL 开发头文件,导致 Python 无法编译内置的 ssl 模块。
解决指令:安装libssl-dev(Ubuntu)或openssl-devel(CentOS),然后回到 Python 源码目录重新执行./configure、make和make altinstall。 - 报错二:
ModuleNotFoundError: No module named '_ctypes'
原因分析:Python 3.7 及以上版本对外部函数接口(FFI)有严格依赖,编译期未检测到 libffi。
解决指令:Ubuntu 执行sudo apt install libffi-dev;CentOS 执行sudo yum install libffi-devel,随后重新编译安装。 - 报错三:CentOS 升级 Python 后
yum无法使用
原因分析:误将/usr/bin/python软链指向了 Python 3,而 CentOS 7 的 yum 由 Python 2 编写。
解决指令:修改/usr/bin/yum和/usr/libexec/urlgrabber-ext-down文件的首行,将#!/usr/bin/python明确修改为#!/usr/bin/python2或#!/usr/bin/python2.7。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













