Linux 下 Python 安装有几种方法
Linux上安装Python有四种主流方式:系统包管理器最稳定但版本偏旧;源码编译可定制版本与优化但需安装编译依赖;pyenv便于多版本切换管理;容器或自动化脚本实现环境隔离与可复现。注意切勿覆盖系统自带的/usr/bin/python,编译安装务必使用makealtinstall。
在 Linux 上安装 Python,这事儿说简单也简单,说复杂也有不少门道。很多新手上来就跟着网上教程一通操作,结果把系统默认的 Python 搞乱了,导致 yum、dnf 这些工具罢工,回头还得折腾半天。所以,在动手之前,先搞清楚不同安装方式的适用场景和潜在坑点,其实比盲目执行命令更重要。
目前主流的安装方式有四种,从“省心省力”到“高度可控”,按场景和风险大致可以排个序:
| 方式 | 适用场景 | 核心优点 | 主要风险或注意 |
|---|---|---|---|
| 系统包管理器安装 | 追求稳定、快速,满足日常开发与运维 | 安装简单、依赖自动处理、与系统兼容性好 | 仓库版本可能偏旧;避免替换系统自带的 /usr/bin/python |
| 从源码编译安装 | 需要特定版本、开启优化或自定义编译选项 | 版本可控、可启用 –enable-optimizations、可指定安装前缀 | 需先安装编译依赖;操作不当可能影响系统工具链 |
| 使用 pyenv 管理多版本 | 同时维护多个项目、需要在 3.x 间快速切换 | 多版本并存、按项目/目录切换、隔离方便 | 初次配置略繁琐;仍需处理编译依赖 |
| 使用容器或自动化脚本 | 环境隔离、CI/CD、快速复现环境 | 一致性强、可移植、回滚方便 | 需掌握 Docker 等工具;非本机直装,调试路径不同 |
方式一:系统包管理器安装 — 最稳妥的“开箱即用”
如果你只是想快速搭建一个可用的 Python 环境,而且不介意用稍旧一点的版本(比如系统仓库里的是 3.9 或 3.10,而不是最新的 3.13),那直接用包管理器准没错。它最大的好处是依赖自动搞定,而且和系统里其他工具兼容性最好。
- Debian/Ubuntu 系:
更新索引并安装:sudo apt update && sudo apt install python3 python3-pip
验证:python3 --version、pip3 --version - RHEL/CentOS/Fedora 系:
安装:sudo yum install python3(或sudo dnf install python3),pip 可额外安装sudo yum install python3-pip(或 dnf)
验证:同上
要点:这是维护成本最低的方式。如果觉得版本不够新,可以再考虑后面两种方式,但千万别手痒去覆盖系统自带的 /usr/bin/python,那是很多系统工具的生命线。
方式二:从源码编译安装 — 版本控的“自己动手”
当你想用某个特定版本,或者需要开启性能优化(比如 --enable-optimizations),又或者想自定义安装路径,那就只能从源码编译了。这个过程不算复杂,但准备工作要做足。
- 安装编译依赖(以 Debian/Ubuntu 为例):
sudo apt install build-essential libssl-dev libffi-dev python3-dev libbz2-dev libsqlite3-dev libreadline-dev libncursesw5-dev tk-dev libgdbm-dev liblzma-dev zlib1g-dev
—— 这一长串包名看着吓人,但缺一个都可能编译失败,建议直接复制粘贴。 - 下载与解压:
wget https://www.python.org/ftp/python/3.x.x/Python-3.x.x.tgz然后tar -xf Python-3.x.x.tgz并进入目录。 - 配置与编译:
./configure --enable-optimizations --prefix=/usr/local/python3.x加make -j $(nproc)
——--enable-optimizations会做一些 profile-guided 优化,能让 Python 跑得更快,但编译时间会长一些。 - 安装:
sudo make altinstall
—— 注意,这里用的是altinstall而不是install,就是为了避免覆盖系统自带的python命令。这是关键细节。 - 使用:
编译好的 Python 在/usr/local/python3.x/bin/下,可以手动加入 PATH,或者创建软链接到/usr/local/bin(但要小心别和系统默认的 python 冲突)。
方式三:使用 pyenv 管理多个版本 — 多版本切换的“神器”
如果你同时维护好几个项目,有的要求 Python 3.8,有的要用 3.11,还有的正在尝鲜 3.13,那 pyenv 绝对是首选。它能在用户层面实现多版本并存,按项目目录或全局切换,互不干扰。
- 安装依赖(和编译安装类似,但更全):
sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl git - 安装 pyenv 本身:
curl https://pyenv.run | bash
—— 这条命令会安装 pyenv 以及它的插件(pyenv-virtualenv 等),非常方便。 - 配置环境变量:
在~/.bashrc或~/.zshrc里加入:
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
然后source ~/.bashrc让其生效。 - 常用命令:
pyenv install --list列出所有可安装版本;
pyenv install 3.11.5安装指定版本;
pyenv global 3.11.5设置全局默认版本,pyenv local 3.8.10则只影响当前目录。
初次配置确实有点繁琐,但只要配好一次,后面切换版本就和喝水一样自然。
方式四:使用容器或自动化脚本 — 终极隔离与可复现
在团队协作、CI/CD 流水线、或者需要快速复现一个特定环境时,Docker 容器是最佳选择。它把整个 Python 环境连同依赖打包在一起,换个机器也能一模一样地跑起来。
- 容器化方式(Docker):
docker run --rm -it python:3.11 bash
—— 这条命令会拉取官方 Python 3.11 镜像,然后进入交互式 shell。你可以在里面自由安装依赖,退出后容器自动销毁,不留痕迹。 - 自动化脚本:
如果想批量部署,可以写一个脚本来自动安装 pyenv 并预设版本,或者直接用 pyenv 的自动化安装脚本(pyenv-installer)。组织内也可以自研脚本,统一依赖和版本,方便回滚。
通用验证与注意事项
不管用哪种方式装完,最好都验证一下:
- 版本:
python3 --version(或python --version,看你怎么配置的) - 包管理:
pip3 --version,如果缺失,可以用sudo apt install python3-pip或get-pip.py安装。 - 虚拟环境:
python3 -m venv .venv然后source .venv/bin/activate,再which python确认路径指向了虚拟环境。
最后,再强调三个关键点——这些是很多新手踩过的坑:
- 不要动系统自带的
/usr/bin/python。很多系统工具(yum、dnf、甚至一些桌面环境)都依赖它。如果想自定义默认命令,请用/usr/local/bin下的软链接,并且明确调用python3.x或pip3.x。 - 编译安装时务必用
make altinstall,否则会覆盖系统的python二进制,后果自负。 - 多版本管理首选 pyenv,它比手动折腾 PATH 和软链接要安全得多,也方便得多。


































