该笔记将记录:在 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 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.0,How 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