「Python」- 安装 | CentOS | Debian | Ubuntu | 源码

该笔记将记录:在 Linux 中,如何安装 Python 环境,以及相关问题的处理方法。整理这些内容是为了:(1)在以后处理相同问题时,复制粘贴执行命令即可,方便快捷;(2)减少寻找解决方案所花费的时间;(3)记录注意事项,防止多次在同个地方跌倒。

版本选择

实现版本

Python 有多种实现,每种实现都有其独特的设计目标和场景。以下是主要的 Python 实现:

CPython | 官方参考实现,用 C 语言编写,是 Python 的官方参考实现。
优势:最广泛使用,兼容性最好。支持大多数 Python 库和框架。包含标准库的完整实现。
局限:全局解释器锁(GIL)限制多线程性能。
场景:通用开发、学习 Python、大多数生产环境。

PyPy | 使用即时编译(JIT)技术提升性能。
优势:执行速度显著快于 CPython(尤其对长时间运行的任务)。兼容大部分 CPython 代码。支持无栈 Python(Stackless)的微线程特性(可选)。
局限:对 C 扩展的支持可能受限。内存占用较高。
场景:高性能计算、替代 CPython 加速代码。

Stackless Python | CPython 的修改版,支持微线程(协程)。
优势:高并发支持(无需多线程)。适用于游戏开发(如 EVE Online 使用 Stackless)。
局限:需单独安装,社区较小。
场景:高并发、游戏服务器。

Cython | Python 的超集,可编译为 C 扩展。
优势:通过静态类型提升性能。与 CPython 完全兼容。
场景:科学计算(如 NumPy 的底层优化)、高性能扩展。

Jython | 运行在 Java 虚拟机(JVM)上,将 Python 代码编译为 Java 字节码。
优势:无缝调用 Java 类库。支持多线程(无 GIL 限制)。
局限:不支持 CPython 的 C 扩展(如 NumPy)。仅兼容 Python 2.7(截至 2023 年)。
场景:Java 生态集成、企业级应用。

IronPython | 基于 .NET 框架(CLR),与 C#、F# 等语言交互。
优势:直接调用 .NET 类库。无 GIL,支持多线程。
局限:对 Python 3 的支持较新(早期版本仅支持 Python 2)。性能可能低于 CPython。
场景:.NET 平台开发、Windows 应用集成。

MicroPython | 为嵌入式系统设计的轻量级实现。
优势:资源占用极低(可在微控制器上运行)。支持实时交互(REPL)。
局限:不兼容部分 Python 标准库。性能较低。
场景:物联网(IoT)、嵌入式开发(如 Raspberry Pi Pico)。

Brython | 在浏览器中运行 Python(编译为 JavaScript)。
优势:替代 JavaScript 编写前端逻辑。
局限:性能较低,生态较小。
场景:教育、网页前端实验。

GraalPython | 基于 GraalVM 的多语言引擎。
优势:支持与其他语言(如 Java、JavaScript)互操作。可编译为原生二进制文件(需 GraalVM)。
场景:多语言混合项目、高性能服务。

选择方法

不同实现因设计目标差异,可能对 Python 版本(如 Python 2/3)或库的支持程度不同,需根据需求评估。若无特殊需求,我们通常选择官方的 CPython 版本。

通用开发:CPython(首选)。
性能敏感:PyPy 或 Cython。
Java/.NET 集成:Jython 或 IronPython。
嵌入式/IoT:MicroPython。
浏览器环境:Brython。

运行环境

环境设置:Python Setup and Usage

Python 3.12.10 / with asdf / CPython

阅读文档,根据文档要求,安装前置依赖:https://github.com/asdf-community/asdf-python

asdf plugin list all | grep python
asdf plugin add python

asdf list all python | grep -E '^3\..+'
asdf install python 3.12.10
asdf global python 3.12.10

which python
which pip
python --version

Python 2.7 on CentOS 7.4

不用安装,系统自带 Python 2.7.5 版本,但是有些其他工作要做(比如安装 pip 命令)。

Python 3.4 on CentOS 6.5

yum install -y python34.x86_64

Python 3.6 on CentOS 6.5

yum install epel-release
curl 'https://setup.ius.io/' -o setup-ius.sh
sh setup-ius.sh
yum --enablerepo=ius info python36u
yum --enablerepo=ius install python36u

Python on Ubuntu

通过 APT 安装

通常 Ubuntu 发行版已经自带 Python 环境,所以我们无需通过自行安装。如果需要手动安装,仅需执行:

apt-get install python3

通过 ppa:deadsnakes/ppa 安装

如果希望使用 Ubuntu 仓库未包含的 Python 版本,能够使用 ppa:deadsnakes/ppa 仓库:

apt update
apt install software-properties-common
add-apt-repository ppa:deadsnakes/ppa
apt install python3.9

# 目前 ppa:deadsnakes/ppa 仓库支持参考:
# https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa

通过 pyenv 安装(推荐)

pyenv/pyenv: Simple Python version management

安装其他常用包

# pip
yum search python | grep pip
yum install -i python2-pip.noarch

通过源码编译

参考 BLFS/Python-3.8.0How to Install Python 3 on Ubuntu 18.04 or 20.04 {Step-by-Step} 文档;

参考文献

3 Methods To Install Latest Python3 Package On CentOS 6 System
How to install the latest version of Python on CentOS
How to install Python 3 on Red Hat Enterprise Linux
Ubuntu 20.04/19.04: Install Python 3.9/3.8/3.7/3.6, Pip and Venv | Techiediaries
How to Install and Manage Multiple Python Versions on Linux | by David Littlefield | DataDrivenInvestor
Deadsnakes python 3.8 on Ubuntu 18.04 LTS