在线安装方式适合绝大多数使用场景,简单、快速、依赖自动处理。如果你需要安装官方仓库里没有的版本,或者最新版,可以配合 PPA / SCL 扩展仓库。如果你是第一次在 Linux 上装 Python,跟着做就行,每一步都有注释和期待回显,踩过的坑我帮你绕。
绝大多数 Linux 发行版已经预装了 Python,但版本不一定是你想要的。比如 Ubuntu 20.04 默认自带 Python 3.8,CentOS 7 自带 Python 2.7(还保留着,主要是系统工具依赖它)。
所以我们要先搞清楚两件事:
在线安装是最简单、最适合新手的方式。本质上就是让系统的包管理器(apt/yum/dnf)直接帮你从官方软件仓库下载并安装。优点是全程一两条命令搞定,依赖关系自动处理;缺点是仓库里的版本不一定是最新的(比如 Ubuntu 22.04 官方仓库里的 Python 3 版本是 3.10,而不是 3.12)。
如果你需要指定特定版本,或者最新版,建议配合 deadsnakes PPA(Ubuntu)或 Software Collections(CentOS/RHEL),下文会详细介绍。
在开始之前,先用几条命令确认自己的操作环境。
# 查看发行版信息,这是最通用的命令,几乎所有 Linux 发行版都有这个文件cat /etc/os-release期待输出(以 Ubuntu 22.04 为例):
NAME="Ubuntu"VERSION="22.04.3 LTS (Jammy Jellyfish)"ID=ubuntuID_LIKE=debianPRETTY_NAME="Ubuntu 22.04.3 LTS"VERSION_ID="22.04"HOME_URL="https://www.ubuntu.com/"SUPPORT_URL="https://help.ubuntu.com/"BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"...如果你是 CentOS / RHEL,输出里的 NAME 字段会显示 CentOS Linux 或 Red Hat Enterprise Linux。
# 备用命令,lsb_release 在 Debian 系发行版上更直观lsb_release -a# 如果上面两个都没用,试这个uname -auname -a 期待输出:
Linux hostname 5.15.0-88-generic #98-Ubuntu SMP Mon Oct 2 15:18:56 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux重点看 x86_64——这说明你是 64 位系统,Python 现代版本都支持;如果看到 aarch64 说明你是 ARM 架构(比如树莓派、部分云服务器),同样没问题,包管理器会自动处理架构差异。
# 查看当前登录用户whoami期待输出:
ubuntu如果输出是 root,说明你直接在 root 用户下,后面的命令不需要 sudo 前缀。如果是普通用户,安装命令需要加 sudo,系统会提示你输入密码。
CentOS 7 特别说明:CentOS 7 已于 2024 年 6 月 30 日正式停止维护(EOL),官方仓库不再更新。如果你还在使用 CentOS 7,建议尽快迁移到 CentOS Stream 9、Rocky Linux 或 AlmaLinux。
Python 解释器本身非常轻量,对硬件几乎没什么要求,但要保证安装过程顺利完成:
磁盘空间建议留足:Python 本体大约 100-200 MB,加上 pip、开发头文件、标准库等,实际占用在 300-500 MB 左右。如果后续要装 NumPy、Pandas 等科学计算库,建议磁盘空间至少预留 2 GB。
这一步是必做的,别跳过。 很多报错的根源就是系统里有多个版本的 Python,安装之前搞清楚现状,省去后面的麻烦。
# 检查 python3 命令是否存在,并查看版本python3 --version期待输出(已安装):
Python 3.10.12如果输出如下,说明 python3 未安装:
bash: python3: command not found# 检查 python2 或 python 命令(部分老系统)python2 --versionpython --version期待输出(CentOS 7 默认环境):
Python 2.7.5重要提醒:Python 2 已于 2020 年 1 月 1 日正式停止维护,千万不要用 Python 2 做新项目开发。但 CentOS 7 等老系统的某些系统工具依赖 Python 2,不要随意卸载,否则可能导致系统工具异常。
# 查看 python3 命令对应的实际路径which python3# 查看所有 python3 相关的路径whereis python3期待输出:
/usr/bin/python3python3: /usr/bin/python3 /usr/bin/python3.10 /usr/lib/python3 /usr/lib/python3.10 /usr/lib/python3.11 /etc/python3 /etc/python3.10 /usr/share/python3 /usr/share/man/man1/python3.1.gz# 列出 /usr/bin 下所有以 python 开头的可执行文件ls /usr/bin/python*期待输出(Ubuntu 22.04):
/usr/bin/python3 /usr/bin/python3.10 /usr/bin/python3.11这说明系统里同时有 Python 3.10 和 Python 3.11,python3 命令默认指向 3.10。
# 在安装任何软件之前,先更新本地的软件包列表索引# 这一步相当于让系统去仓库"刷新目录",确保拿到的版本信息是最新的# -y 参数表示遇到确认提示时自动回答 yes,省去手动确认sudo apt update期待输出(节选):
Hit:1 http://archive.ubuntu.com/ubuntu jammy InReleaseHit:2 http://archive.ubuntu.com/ubuntu jammy-updates InReleaseHit:3 http://archive.ubuntu.com/ubuntu jammy-backports InReleaseHit:4 http://security.ubuntu.com/ubuntu jammy-security InReleaseReading package lists... DoneBuilding dependency tree... DoneReading state information... Done看到 Done 就说明索引更新成功,可以继续下一步。
# 安装 Python 3(官方仓库默认版本)# python3 是包名,apt 会自动解析它需要的所有依赖并一起安装sudo apt install python3 -y期待输出(节选):
Readingpackagelists... DoneBuildingdependencytree... DoneReadingstateinformation... DoneThefollowingadditionalpackageswillbeinstalled:libpython3-stdliblibpython3.10-minimallibpython3.10-stdlibpython3-minimalpython3.10python3.10-minimalSuggestedpackages:python3-docpython3-tkpython3-venvThefollowingNEWpackageswillbeinstalled:python3python3-minimalpython3.10python3.10-minimal ...0 upgraded, 8 newlyinstalled, 0 toremoveand 2 notupgraded.Needtoget 4,596 kBofarchives.Afterthisoperation, 18.9MBofadditionaldiskspacewillbeused....Settinguppython3 (3.10.6-1~22.04) ...Processingtriggersforman-db (2.10.2-1) ...安装完成后最后几行会显示版本配置信息,没有报错就说明安装成功。
# 安装 pip3(Python 的包管理工具,开发必备)# python3-pip 是 pip 的包名sudo apt install python3-pip -y# 安装 Python 开发头文件(编译扩展模块时需要)# 比如安装 cryptography、Pillow 等有 C 扩展的包时,没有这个会报错sudo apt install python3-dev -y# 安装 venv 模块(用于创建虚拟环境)sudo apt install python3-venv -y# 安装构建工具(编译依赖时需要)sudo apt install build-essential -y为什么要装这几个?
python3-pip让你能用pip install命令装第三方库;python3-dev在编译有 C 扩展的包时必须有;build-essential包含 gcc 编译器,是编译任何 C 代码的基础;python3-venv是后面创建虚拟环境必须的。建议一次性装全,省得后面缺东西。
如果官方仓库的版本太旧,你需要更新的 Python 版本,可以通过 deadsnakes PPA 安装。deadsnakes 是一个专门维护 Python 各个版本的第三方源,Ubuntu 社区广泛使用,安全可靠。
# 安装 software-properties-common,它提供 add-apt-repository 命令sudo apt install software-properties-common -y# 添加 deadsnakes PPA 源# 添加后系统就能从这个源获取更多 Python 版本sudo add-apt-repository ppa:deadsnakes/ppa期待输出(部分):
Deadsnakes PPA More info: https://launchpad.net/~deadsnakes/+archive/ubuntu/ppaPress [ENTER] tocontinueor Ctrl-c to cancel adding it.Fetching: deadsnakes/ppaOKUpdating from such repository can't be done securely so disabling it for now....按 Enter 确认后继续:
# 更新软件包索引,让 apt 能识别到新加的 deadsnakes 源里的包sudo apt update# 安装指定版本,例如 Python 3.12# 把 3.12 换成你需要的版本号即可,例如 python3.11、python3.9 等sudo apt install python3.12 -y# 安装对应版本的 venv 和 dev 工具sudo apt install python3.12-venv python3.12-dev -y期待输出:
Readingpackagelists... Done...ThefollowingNEWpackageswillbeinstalled:python3.12python3.12-devpython3.12-minimalpython3.12-venv...Settinguppython3.12 (3.12.2-1+jammy1) ...安装完成后,用 python3.12 --version 验证即可。
dnf 是 yum 的升级版,功能更强,性能更好,语法基本一样。CentOS 8 / Stream 及更新版本默认使用 dnf。
# 更新本地软件包元数据# dnf 的缓存刷新命令,等同于 apt updatesudo dnf makecache期待输出:
CentOS Stream 9 - BaseOS 32 MB/s | 11 MB 00:00CentOS Stream 9 - AppStream 52 MB/s | 27 MB 00:00CentOS Stream 9 - Extras packages 8.1 kB/s | 18 kB 00:02Last metadata expiration check: 0:00:01 ago on ...Metadata cache created.# 查看官方仓库中可用的所有 Python 相关包# 这样可以确认哪些版本可以直接安装,避免瞎猜dnf list available | grep python3期待输出(节选):
python3.x86_64 3.11.5-1.el9baseospython3-devel.x86_64 3.11.5-1.el9appstreampython3-pip.noarch 23.3.1-1.el9appstreampython3.11.x86_64 3.11.5-1.el9baseospython3.12.x86_64 3.12.1-1.el9crb# 安装仓库默认版本的 Python 3sudo dnf install python3 -y# 安装 pipsudo dnf install python3-pip -y# 安装开发工具sudo dnf install python3-devel -y# 安装编译工具组sudo dnf groupinstall "Development Tools" -y期待输出(安装 python3 节选):
Dependencies resolved.=================================================================== Package Architecture Version Repository Size===================================================================Installing: python3 x86_64 3.11.5-1.el9 baseos 26 kInstalling dependencies: python3-libs x86_64 3.11.5-1.el9 baseos 7.9 M python3-pip noarch 23.3.1-1.el9 appstream 2.9 M...Installed: python3-3.11.5-1.el9.x86_64 python3-libs-3.11.5-1.el9.x86_64Complete!Fedora 的官方仓库通常比较激进,可以直接安装较新的 Python 版本:
# 安装 Python 3.12(如果仓库里有的话)sudo dnf install python3.12 -y# 安装对应的 pip 和 develsudo dnf install python3.12-pip python3.12-devel -y安装完成之后别急着用,先做几个验证,确保环境是正常的。
# 验证 Python 3 的版本信息python3 --version期待输出:
Python 3.10.12版本号和你安装的一致,就说明装对了。
# 进入 Python 交互式解释器,验证是否可以正常运行python3期待输出:
Python 3.10.12 (main, Nov 202023, 15:14:05) [GCC 11.4.0] on linuxType "help", "copyright", "credits"or"license"for more information.>>>出现 >>> 提示符就说明解释器正常运行。随便输入一条 Python 代码测试:
>>> print("Hello, Python!")Hello, Python!>>> exit()exit() 退出解释器,回到 Shell。
# 确认 python3 命令指向哪个可执行文件which python3# 查看 Python 的完整编译信息python3 -c "import sys; print(sys.version)"# 查看 Python 的模块搜索路径(对调试 import 问题很有用)python3 -c "import sys; print('\n'.join(sys.path))"期待输出(sys.path):
/usr/lib/python310.zip/usr/lib/python3.10/usr/lib/python3.10/lib-dynload/usr/local/lib/python3.10/dist-packages/usr/lib/python3/dist-packagespip 是 Python 的包管理工具,地位相当于 Linux 里的 apt/yum。国内直接用 pip 安装包很慢甚至超时,换个国内镜像源是必须的操作。
# 查看 pip 版本pip3 --version期待输出:
pip 22.0.2from /usr/lib/python3/dist-packages/pip (python 3.10)看到版本号就说明 pip 正常。如果提示 command not found:
# 手动安装 pip(Debian/Ubuntu)sudo apt install python3-pip -y# 手动安装 pip(CentOS/RHEL/Fedora)sudo dnf install python3-pip -y# 或者通过 ensurepip 安装(通用方法)python3 -m ensurepip --upgrade# 把 pip 自身升级到最新版# 用 python3 -m pip 而不是直接用 pip3,更稳定python3 -m pip install --upgrade pip期待输出:
Requirement already satisfied: pip in /usr/lib/python3/dist-packages (22.0.2)Collecting pip Downloading pip-24.0-py3-none-any.whl.metadata (3.6 kB)...Successfully installed pip-24.0pip 默认从 PyPI 下载包,国内访问极慢,建议配置阿里云或腾讯云镜像。
方法一:命令行一键配置(推荐)
# 配置阿里云镜像源,永久生效# 这个命令会自动在 ~/.config/pip/pip.conf 或 ~/.pip/pip.conf 中写入配置pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/# 同时设置信任的主机(避免 HTTPS 证书问题)pip3 config set global.trusted-host mirrors.aliyun.com期待输出:
Writing to /home/ubuntu/.config/pip/pip.conf方法二:手动编辑配置文件
# 创建 pip 配置目录(如果不存在)mkdir -p ~/.config/pip# 创建或编辑配置文件nano ~/.config/pip/pip.conf在文件中写入以下内容:
[global]index-url = https://mirrors.aliyun.com/pypi/simple/trusted-host = mirrors.aliyun.comtimeout = 120保存后退出(Nano 编辑器按 Ctrl+X,然后按 Y,再按 Enter)。
可用的国内镜像源列表:
https://mirrors.aliyun.com/pypi/simple/ | |
https://mirrors.cloud.tencent.com/pypi/simple/ | |
https://pypi.tuna.tsinghua.edu.cn/simple/ | |
https://pypi.mirrors.ustc.edu.cn/simple/ |
# 查看 pip 当前的完整配置pip3 config list# 用 pip 安装一个小包测试速度,-v 参数显示详细下载信息pip3 install requests -vpip3 config list 期待输出:
global.index-url='https://mirrors.aliyun.com/pypi/simple/'global.trusted-host='mirrors.aliyun.com'这一块非常重要,很多初学者跳过虚拟环境,把所有包都装到系统 Python 里,等项目多了就乱套了。强烈建议每个项目使用独立的虚拟环境。
# 在当前目录下创建名为 venv 的虚拟环境# python3 -m venv 是调用 venv 模块,<目录名> 是虚拟环境的目录名,可以自定义python3 -m venv venv# 也可以指定绝对路径python3 -m venv /home/ubuntu/myproject/venv期待输出:(没有输出就说明创建成功,venv 目录被创建在当前位置)
# 确认目录已创建ls venv/期待输出:
binincludeliblib64pyvenv.cfg# 激活虚拟环境(Linux / macOS 通用)source venv/bin/activate激活后期待输出(注意命令行提示符变化):
(venv) ubuntu@hostname:~/myproject$提示符前多了 (venv) 标识,说明虚拟环境已激活。此时 python、pip 命令都指向虚拟环境里的版本,和系统 Python 完全隔离。
# 验证虚拟环境中的 Python 路径which python期待输出:
/home/ubuntu/myproject/venv/bin/python路径在 venv 目录下,说明隔离成功。
# 激活虚拟环境后,直接用 pip 安装(不需要 sudo)pip install requestspip install flaskpip install numpy pandas# 退出虚拟环境,回到系统环境deactivate退出后期待变化:
ubuntu@hostname:~/myproject$(venv) 标识消失,说明已退出虚拟环境。
# 在虚拟环境中,导出所有已安装的包及其版本pip freeze > requirements.txt# 查看生成的文件cat requirements.txt期待输出:
certifi==2024.2.2charset-normalizer==3.3.2idna==3.6requests==2.31.0urllib3==2.2.0# 在新环境中根据 requirements.txt 重建所有依赖pip install -r requirements.txt有时候你可能需要卸载通过包管理器安装的 Python(比如要换版本,或者清理旧版本)。注意:不要卸载系统默认的 Python,可能会导致系统工具异常。
# 先确认要卸载的版本,避免误删python3 --version# 卸载 Python 3.12(如果你装的是通过 deadsnakes 安装的特定版本)# 把 3.12 换成你实际要卸载的版本sudo apt remove python3.12 -y# 卸载不再需要的相关依赖sudo apt autoremove -y# 清理残留配置文件(purge 比 remove 更彻底)sudo apt purge python3.12 -y期待输出:
Readingpackagelists... DoneBuildingdependencytree... DoneReadingstateinformation... DoneThefollowingpackageswillbeREMOVED:python3.12python3.12-devpython3.12-venv...0 upgraded, 0 newlyinstalled, 3 toremoveand 0 notupgraded.Afterthisoperation, 75.3MBdiskspacewillbefreed.(Readingdatabase ... 95483 filesanddirectoriescurrentlyinstalled.)Removingpython3.12 (3.12.2-1+jammy1) ...# 查看通过 yum/dnf 安装的 Python 包rpm -qa | grep python# 卸载指定版本(谨慎操作)sudo yum remove python3 -y# 或者 dnfsudo dnf remove python3 -y# 卸载某个具体的包pip3 uninstall requests -y# 卸载虚拟环境中的所有包(先激活虚拟环境)pip freeze | xargs pip uninstall -y虚拟环境就是一个普通目录,直接删掉就行:
# 先退出虚拟环境(如果已激活)deactivate# 删除虚拟环境目录rm -rf venv/原因:网络不通,或者软件仓库地址不可达。
解决方案:
# 1. 先检查网络连通性ping -c 4 8.8.8.8# 2. 检查 DNS 解析是否正常nslookup archive.ubuntu.com# 3. 如果是国内服务器,考虑换国内镜像源(以阿里云为例)sudo sed -i 's|http://archive.ubuntu.com/ubuntu|https://mirrors.aliyun.com/ubuntu|g' /etc/apt/sources.list# 4. 替换后重新 updatesudo apt update原因:安装路径不在 PATH 环境变量里,或者安装实际上失败了。
解决方案:
# 1. 先确认安装是否成功which python3find / -name "python3" 2>/dev/null# 2. 如果找到了,查看 PATHecho$PATH# 3. 把 Python 所在路径加入 PATH(临时)export PATH=$PATH:/usr/bin# 4. 永久生效:写入 ~/.bashrcecho'export PATH=$PATH:/usr/bin' >> ~/.bashrcsource ~/.bashrc原因:PyPI 官方源在国内访问慢或不稳定。
解决方案:
# 临时使用国内镜像源(-i 参数指定临时源)pip3 install 包名 -i https://mirrors.aliyun.com/pypi/simple/# 永久换源(参考第 7 节)pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/原因:缺少编译工具,某些包有 C 扩展,需要 gcc 编译器。
解决方案:
# Ubuntu/Debiansudo apt install build-essential python3-dev -y# CentOS/RHEL/Fedorasudo dnf groupinstall "Development Tools" -ysudo dnf install python3-devel -y原因:在 root 用户下直接运行 pip 可能破坏系统包的权限设置。
解决方案:
# 推荐做法一:使用虚拟环境(最佳实践)python3 -m venv venvsource venv/bin/activatepip install 包名 # 不需要 sudo# 推荐做法二:安装到用户目录(不影响系统)pip3 install --user 包名# 如果非要用 root,加 --break-system-packages 参数(Python 3.11+ 的要求)sudo pip3 install 包名 --break-system-packages解决方案:
# 注册两个版本到 update-alternativessudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 2# 交互式选择默认版本sudo update-alternatives --config python3期待交互界面:
There are 2 choices for the alternative python3 (providing /usr/bin/python3). Selection Path Priority Status------------------------------------------------------------* 0 /usr/bin/python3.122 auto mode1 /usr/bin/python3.101 manual mode2 /usr/bin/python3.122 manual modePress <enter> to keep the current choice[*], ortype selection number:输入 2 后按 Enter,以后 python3 就默认使用 3.12。
简单说,在 Python 3 环境下,pip3 和 pip 通常是同一个工具,只是命令名不同。
pip3pip最佳实践:使用 python3 -m pip 代替 pip3,这样可以确保 pip 和 python3 是同一个解释器配套的:
python3 -m pip install 包名python3 -m pip --version回顾一下这篇教程覆盖的内容:
安装前,先确认发行版类型(cat /etc/os-release),确认系统里有没有 Python(python3 --version),再根据需求决定要不要装、装什么版本。
安装过程,根据发行版选对应的包管理器:
apt,需要更新版本用 deadsnakes PPAyum,需要更高版本用 SCLdnf安装后,用 python3 --version 和 python3 -c "print('OK')" 验证安装是否成功,pip 记得换成国内镜像源,项目开发时用虚拟环境隔离依赖。
最新最全的的内容在永久域名 itinstall.dev ,可以收藏备用。