【Python零基础教程】008 | Linux 上安装 Python:apt / yum / 源码编译
008 | Linux 上安装 Pythonapt / yum / 源码编译难度⭐⭐ |预计阅读10 分钟 |前置[007 macOS 安装 Python] |下一篇[009 Python 版本区别]1. 你为什么要看这篇Linux 上安装 Python 比 Windows 和 Mac 复杂——不是因为操作难而是因为选择多。不同发行版的包管理器不同apt vs yum vs dnf同一个发行版又可以源码编译安装。选错方式轻则版本太旧重则把系统 Python 搞炸。这一篇覆盖三种主流 Linux 发行版Ubuntu / CentOS / Arch的包管理器安装 通用的源码编译安装。读完你可以在任何一台 Linux 服务器上正确地部署 Python。2. Linux Python 安装全景图禁止Linux 装 Python 选哪种包管理器安装源码编译安装apt Ubuntu/Debianyum/dnf RHEL/CentOS/Fedorapacman Arch/Manjaro自定义版本 编译选项替换系统 Python图 2-1Linux Python 安装决策树。红色 决策起点蓝色 两大流派橙色 三种包管理器绿色 源码编译。灰色虚线 绝对不能做的事。3. 前置操作检查系统自带 Python# 几乎所有 Linux 发行版都自带 Python 3python3--version# 例如 Ubuntu 24.04 输出Python 3.12.3whichpython3# 例如输出/usr/bin/python3# 关键确认系统 Python 的路径ls-la/usr/bin/python3# 输出中如果有 - python3.12 这样的符号链接说明这是系统管理的版本核心原则再次强调/usr/bin/python3是系统的不要删、不要替换、不要用sudo pip install往里装包。你需要做的是在旁边另装一个或者用虚拟环境隔离。4. 方案一包管理器安装推荐4.1 Ubuntu / Debian 系apt# 1. 更新包索引sudoaptupdate# 2. 安装 Python 3.12及其完整工具链sudoaptinstallpython3.12 python3.12-venv python3.12-dev python3-pip# 3. 验证python3.12--version# Python 3.12.xpip3.12--version# pip 24.xapt 的版本滞后问题Ubuntu 22.04 LTS 的默认 apt 源中 Python 最高只到 3.10。如果你需要更新的版本添加 deadsnakes PPAPython 官方维护的 Ubuntu 源sudoaptupdatesudoaptinstallsoftware-properties-common-ysudoadd-apt-repository ppa:deadsnakes/ppa-ysudoaptupdatesudoaptinstallpython3.12 python3.12-venv python3.12-dev-y术语PPAPersonal Package Archive是 Ubuntu 的第三方软件源。deadsnakes 是 CPython 核心开发者维护的非官方 PPA提供了最新 Python 版本的 apt 包。它虽然叫dead snakes死蛇但可靠性在社区有共识。4.2 RHEL / CentOS / Fedora 系yum / dnf# CentOS 7 及更早用 yumsudoyuminstallpython3.12 python3.12-devel python3-pip-y# CentOS 8 / Fedora用 dnfsudodnfinstallpython3.12 python3.12-devel python3-pip-y# 验证python3.12--versionRHEL 系的默认源通常不包含最新 Python。CentOS 7 官方源最高只到 Python 3.6。如果你在 CentOS 7 上需要 3.12必须源码编译见第 5 节。4.3 Arch / Manjaropacman# Arch Linux 默认滚动升级Python 版本通常是最新的sudopacman-Spython python-pip python-virtualenv# 验证python--version# Arch 直接用 python不是 python3Arch 的哲学是上游发布什么我就给什么所以pacman -S python装的通常就是最新稳定版。注意Arch 上用python而不是python3。4.4 包管理器安装的目录结构# 可执行文件位置以 Ubuntu deadsnakes 为例/usr/bin/python3.12# 解释器/usr/bin/pip3.12# pip# pip install 的包安装位置/usr/local/lib/python3.12/dist-packages/# apt 安装的包~/.local/lib/python3.12/site-packages/# pip install --user 安装的包注意到dist-packages和site-packages两个不同的目录名——这是 Debian/Ubuntu 系特有的约定apt 装到dist-packagespip 装到site-packages。两者都在 Python 的搜索路径中但分开管理防止冲突。5. 方案二源码编译安装当包管理器没有你要的版本如 CentOS 7 需要 Python 3.12或你需要自定义编译选项如开启--enable-optimizations源码编译是最可靠的选择。5.1 完整编译流程下载源码 .tar.xz安装编译依赖./configure --enable-optimizationsmake -j N 编译make test 可选但推荐sudo make altinstall图 5-1源码编译流程。红色 起始步骤蓝色 前置准备橙色 编译核心步骤绿色 最终安装。注意是altinstall不是install。# 第一步安装编译依赖 # Ubuntu / Debiansudoaptupdatesudoaptinstallbuild-essential libssl-dev zlib1g-dev\libbz2-dev libreadline-dev libsqlite3-devcurl\libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev\libffi-dev liblzma-dev-y# CentOS / RHELsudoyum groupinstallDevelopment Tools-ysudoyuminstallopenssl-devel bzip2-devel libffi-devel\readline-devel sqlite-devel xz-devel-y# 第二步下载源码 cd/tmpcurl-Ohttps://www.python.org/ftp/python/3.12.7/Python-3.12.7.tar.xztar-xfPython-3.12.7.tar.xzcdPython-3.12.7# 第三步配置编译选项 ./configure --enable-optimizations--prefix/usr/local# --enable-optimizations开启 PGOProfile Guided Optimization# 编译时间增加约 2 倍但运行时性能提升 10-20%# --prefix/usr/local 安装到 /usr/local 而不是覆盖系统 Python# 第四步编译-j 后面跟 CPU 核心数make-j$(nproc)# 第五步可选运行测试套件 maketest# 这一步耗时 5-15 分钟但能确保编译出的 Python 没有暗病# 第六步安装 sudomakealtinstall# 关键是 altinstall不是 install# install → 覆盖系统的 python3 → 系统可能炸# altinstall → 只安装 python3.12 → 系统 python3 保持原样5.2altinstallvsinstall为什么这一字之差至关重要# make install 会做的事危险# 创建 /usr/local/bin/python3 符号链接 → 覆盖系统默认行为# make altinstall 会做的事安全# 只创建 /usr/local/bin/python3.12 ← 带版本号不碰 python3 这个别名# 验证whichpython3.12# /usr/local/bin/python3.12python3.12--version# Python 3.12.75.3 卸载源码编译的 Python# 删除安装的文件sudorm-rf/usr/local/bin/python3.12*sudorm-rf/usr/local/lib/python3.12/sudorm-rf/usr/local/include/python3.12/# 删除源码目录rm-rf/tmp/Python-3.12.76. 踩坑与避坑坑 1make install把系统 Python 覆盖了症状安装完成后python3指向了你编译的版本系统工具如apt、software-properties开始报 Python 相关的错误。修复如果你还没重启终端——立刻执行# 恢复系统 Python 的符号链接sudoln-sf/usr/bin/python3.10 /usr/bin/python3# 版本号按实际调整# 或者更根本的重装系统的 Python 包sudoaptinstall--reinstallpython3防御永远用sudo make altinstall养成肌肉记忆。坑 2编译时缺少 OpenSSL 导致 pip 无法使用 HTTPS症状python3.12-mpipinstallrequests# 报错pip is configured with locations that require TLS/SSL,# however the ssl module in Python is not available.原因编译前没有安装libssl-devUbuntu或openssl-develCentOS。Python 的ssl模块需要这些头文件才能编译进去。修复# 安装缺失的 SSL 开发库sudoaptinstalllibssl-dev-y# Ubuntu# sudo yum install openssl-devel -y # CentOS# 重新编译安装cd/tmp/Python-3.12.7 ./configure --enable-optimizations--prefix/usr/localmake-j$(nproc)sudomakealtinstall坑 3源码编译后python3.12找不到pip症状python3.12 -m pip提示No module named pip。原因编译时缺少libffi-dev或libbz2-dev导致ensurepip模块未编译进去。修复# 下载 get-pip.py 手动安装curl-sShttps://bootstrap.pypa.io/get-pip.py|python3.12 pip3.12--version# 验证7. 总结与自测四个核心结论能用包管理器就不要源码编译——apt/dnf/pacman 安装的 Python 有发行版团队维护安全更新自动推送。源码编译是你自己负责维护。需要新版本但包管理器没有Ubuntu 加 deadsnakes PPACentOS 老版本源码编译Arch 直接用pacman——三种场景三种方案。altinstall是救命稻草——Makefile 里这个选项保护了系统 Python 不被覆盖。记不住也别记错。编译前先把开发库装全——libssl-dev、libffi-dev、libbz2-dev是三大金刚缺一个后患无穷。自测题Q1源码编译时以下哪个命令是正确的安装方式A.sudo make installB.sudo make altinstallC.sudo make python3Q2Ubuntu 上pip install的包默认装到哪个目录A./usr/lib/python3/dist-packages/B./usr/local/lib/python3.12/dist-packages/或~/.local/lib/python3.12/site-packages/C./opt/python3/packages/答案见文末下一篇预告[009 认识 Python 版本2.x 与 3.x 的区别]——Python 2 为什么死了3.10/3.11/3.12/3.13 各自引入了什么如何选择版本自测答案Q1 → Baltinstall不覆盖系统python3别名 | Q2 → Bapt 装的包在dist-packagespip 装的默认在site-packages

相关新闻

基于Enhanced Tube-RRT*的无人机集群吊挂运输轨迹规划与优化

基于Enhanced Tube-RRT*的无人机集群吊挂运输轨迹规划与优化

1. 项目概述:当无人机集群“拎”起重物最近几年,无人机送货、无人机表演已经不算新鲜事,但让一群无人机像蚂蚁搬家一样,协同吊挂运输一个大型、沉重的物体,这事儿的技术含量就完全不一样了。这不仅仅是让几架飞机飞起来…

2026/6/21 22:39:02阅读更多 →
深入理解systemd单元机制与service文件核心配置

深入理解systemd单元机制与service文件核心配置

1. 项目概述:从“启动一个服务”到真正理解 systemd 的运行逻辑你有没有遇到过这样的场景:在一台刚装好的 Linux 服务器上,敲下sudo systemctl start nginx,终端却冷冷地回你一句Failed to connect to bus: No such file or direc…

2026/6/21 22:39:02阅读更多 →
Flask生产部署:Ubuntu 18.04下uWSGI+Nginx实战指南

Flask生产部署:Ubuntu 18.04下uWSGI+Nginx实战指南

1. 为什么 Flask 开发者在 Ubuntu 18.04 上必须跨过 uWSGI Nginx 这道坎你写完一个 Flask 应用,本地flask run跑得飞起,页面秒开,API 响应如丝般顺滑——然后兴冲冲部署到 Ubuntu 18.04 服务器上,用python app.py启动&#xff0c…

2026/6/21 22:39:02阅读更多 →
HunyuanVideo 1.5深度解析:ComfyUI工作流与LoRA微调实战指南

HunyuanVideo 1.5深度解析:ComfyUI工作流与LoRA微调实战指南

1. 项目概述:为什么 HunyuanVideo 1.5 值得你花一整晚细读HunyuanVideo 1.5 不是又一个“发个模型就完事”的轻量更新,它是腾讯混元团队在视频生成领域一次系统性能力跃迁。我从去年底开始跟踪它的内测版本,从早期只能生成3秒模糊片段&#x…

2026/6/22 4:35:30阅读更多 →
Wan2.1视频生成技术深度解析:VAE-DiT双引擎与隐空间对齐

Wan2.1视频生成技术深度解析:VAE-DiT双引擎与隐空间对齐

1. 为什么这篇技术报告值得花两万字拆解:不是讲“通义万相有多强”,而是看它如何重新定义视频生成的工程边界通义万相 Wan2.1 这个名字,最近在AI视觉圈里出现的频率,已经快赶上“Stable Diffusion”刚火那会儿了。但和当年SD靠开源…

2026/6/22 4:35:30阅读更多 →
DeepSeek V4 Flash如何重塑AI Agent开发效率

DeepSeek V4 Flash如何重塑AI Agent开发效率

1. 项目概述:一次被低估的底层模型切换,正在悄悄改写AI Agent开发的游戏规则OpenClaw把默认模型从原先的版本切到DeepSeek V4 Flash,这事表面看只是配置文件里一行参数的改动,但实际影响远不止“换了个模型”这么简单。我从去年底…

2026/6/22 4:35:30阅读更多 →
OMP终端:Windows下AI编程终端的底层运行时隔离与会话式交互重构

OMP终端:Windows下AI编程终端的底层运行时隔离与会话式交互重构

1. 项目概述:这不是又一个“玩具级”AI终端,而是一次终端交互范式的重写 “又一款 AI 终端编程神器,开源了!”——看到这个标题,我第一反应不是点开,而是把鼠标悬停在链接上,盯着它看了三秒。过…

2026/6/22 4:35:30阅读更多 →
AES加密模式详解与OpenSSL C库实战指南

AES加密模式详解与OpenSSL C库实战指南

1. 项目概述:为什么我们需要深入理解AES加密模式与OpenSSL C库?如果你正在用C语言处理数据安全,无论是开发一个需要保护用户通信的客户端,还是为嵌入式设备实现固件加密,AES(高级加密标准)几乎是…

2026/6/22 4:35:30阅读更多 →
论文双检测避坑指南:百考通AI精准解决查重+AIGC双重审核难题

论文双检测避坑指南:百考通AI精准解决查重+AIGC双重审核难题

当下学术论文审核早已告别单纯查重复率的单一时代,知网、维普、格子达等主流检测平台,均已全面落地重复率查重AIGC人工智能检测双重审核机制。这也是很多学生、科研从业者论文修改反复返工、越改越崩的核心原因。相信很多人都遇到过两难困境:…

2026/6/22 4:30:30阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/21 0:00:40阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/22 1:15:34阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/21 0:00:40阅读更多 →
Codex本地AI编码代理与CC Switch协议适配实战

Codex本地AI编码代理与CC Switch协议适配实战

1. Codex不是“另一个VS Code插件”,而是本地AI编码代理的临界点Codex这个名字,现在被太多人误读了。它不是ChatGPT那个早已停更的旧模型代号,也不是某个新出的VS Code扩展图标——它是2024年中后期悄然浮出水面的一类本地化AI编码代理&#…

2026/6/22 0:04:18阅读更多 →
从MSP430到Flexis QE128:8/32位MCU无缝迁移与低功耗设计实战

从MSP430到Flexis QE128:8/32位MCU无缝迁移与低功耗设计实战

1. 项目概述:当8位MCU遇到性能瓶颈,我们如何优雅升级?在嵌入式开发领域,尤其是电池供电的便携式设备、工业传感器节点或智能家居终端中,我们常常面临一个经典的两难选择:是选择功耗极低但性能有限的8位微控…

2026/6/22 0:04:18阅读更多 →
大语言模型空间推理能力提升:TEXT2SPACE数据集与ASCII增强技术解析

大语言模型空间推理能力提升:TEXT2SPACE数据集与ASCII增强技术解析

1. 项目缘起:当大语言模型“看”不懂空间 最近在折腾大语言模型(LLM)的各种应用时,我发现一个挺有意思的现象:你让模型写首诗、写代码、甚至做逻辑推理,它可能都表现得有模有样。但一旦涉及到需要理解“空间…

2026/6/22 0:04:18阅读更多 →