Python
来源 什么是 Python?
- 它是一种解释型、交互式、面向对象的编程语言;
- 它包含模块、异常、动态类型、极高级的动态数据类型和类;
- 它支持多种编程范式,而不仅仅是面向对象编程,例如过程式和函数式编程;
- 它将强大的功能与非常清晰的语法相结合;
- 它具有通往许多系统调用和库以及各种窗口系统的接口,并且可以使用 C 或 C++ 进行扩展;
- 它也可作为需要可编程接口的应用程序的扩展语言;
- 它是可移植的——它运行在包括 Linux 和 macOS 在内的许多 Unix 变体以及 Windows 上。
安装
其他版本
Python 的先前和未来版本可通过 Arch 用户仓库 (AUR) 获取。这些版本对于需要特定版本的应用程序或项目,或者仅供研究很有用。更多信息,请参阅 Python 版本状态 和 状态键。
特性 (Feature)(可接受新特性)和 预发布 (prerelease)(不再添加新特性)
- Python 3.15: python315AUR (特性)
Bug 修复 (Bugfix)(也称为 维护 (maintenance) 或 稳定 (stable))
- Python 3.14: python314-freethreadedAUR (自由线程 (free-threaded)——禁用了 全局解释器锁 (GIL))
- Python 3.13: python313AUR
- Python 3.13: python313-freethreadedAUR (自由线程)
安全 (Security)(仅接受安全修复)
生命周期结束 (End-of-life)(不再维护)
- Python 3.9: python39AUR — PEP 596
- Python 3.8: python38AUR — PEP 569
- Python 3.7: python37AUR — PEP 537
- Python 3.6: python36AUR — PEP 494
- Python 2.7: python2AUR — Python 2 退役
这些软件包中的每一个都会安装一个以版本号命名的独立二进制文件(例如 Python 3.13 为 python3.13),从而允许系统上共存多个版本。您也可以使用 pyenv(1) 或 uv 来轻松安装并切换多个 Python 版本。
旧版本 Python 的额外模块和库可以在 AUR 中通过搜索 python<去掉小数点的版本号> 找到,例如搜索 python310 以查找 Python 3.10 的模块。
您也可以在 https://pythonlang.cn/downloads/ 页面下载任何版本的源代码。
替代实现
python 软件包安装的是 CPython,即 Python 的参考实现。不过,还有其他实现可用。这些实现通常基于旧版本的 Python,与 CPython 并不完全兼容。
Arch Linux 上可用的实现包括
- IronPython — Python 编程语言的一种实现,与 .NET 紧密集成。它可以使用 .NET 库,并允许 .NET 程序使用 Python 库。
- Jython — 用 Java 编写的 Python 语言实现。它可用于将 Python 脚本嵌入到 Java 程序中,或在 Python 程序中使用 Java 库。
- micropython — 用于微控制器的 Python。它包含 Python 标准库的一个小子集,并针对在微控制器和受限环境中运行进行了优化。
- PyPy — 用 Python 编写的 Python 实现。与 CPython 相比,它在速度和内存使用方面具有优势。
替代 Shell
python 软件包包含一个交互式 Python Shell (REPL),可以使用 python 命令启动。以下 Shell 也可用:
- bpython — Python 解释器的花哨界面。
- IPython — 一个强大的交互式 Python Shell。
- Jupyter — 一个由 IPython 提供支持的基于 Web 的计算应用程序。
- ptpython — 使用 prompt-toolkit 构建的高级 Python REPL。
软件包管理
在 Arch Linux 上有几种安装 Python 软件包的方法。
Arch 软件仓库
大量流行的软件包可以在官方仓库和 AUR 中找到。这是安装系统级软件包的推荐方式,也是 Arch Linux 官方唯一支持的方法。
第三方包
从事 Python 开发的人员可能需要使用 Arch 仓库中没有的软件包或特定版本的软件包。推荐的做法是使用单独的虚拟环境来隔离每个项目,防止与 /usr 下的系统软件包冲突。有多种工具可用于在虚拟环境中安装软件包:
- pip(1) — Python 的官方软件包安装程序。
- pipx — 一种专门的软件包安装程序,只能用于安装带有 CLI 入口点的软件包(不能安装库包)。
- Poetry — 简化了 Python 依赖管理和打包。Poetry 是一个用于开发、构建、发布和跟踪 Python 项目依赖关系的单一工具。
- Conda — Conda 为任何语言提供软件包、依赖项和环境管理。Conda 最初是为 Python 创建的,在科学计算、数据科学和机器学习领域很流行。Conda 是 miniforge 社区发行版以及 Anaconda 和 Miniconda 发行版的软件包管理器。
- uv — 一个极快的 Python 软件包安装程序和解析器,用 Rust 编写。一个可以替代 pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv 等工具的集成工具。
pip、pipx、poetry 和 uv 从 Python 软件包索引 (PyPI) 和其他索引安装软件包。Conda 和 Miniconda 使用 Anaconda 仓库。
作为虚拟环境的替代方案,可以使用 pip install --user 将软件包安装到 用户方案 (user scheme) 中,而不是 /usr 中。这会按用户而不是按项目来分隔软件包。虚拟环境通常是更好的选择。
有关软件包管理的官方最佳实践,请参阅 Python 打包用户指南。
历史说明
历史上,easy_install(属于 python-setuptools)曾用于安装以 Eggs 格式分发的软件包。easy_install 和 Eggs 现已被 pip 和 Wheels 取代。有关更多信息,请参阅 pip vs easy_install 和 软件包格式。
旧版本的 pip 可以在系统范围内安装第三方软件包,但这导致了 PEP 668 中概述的许多问题。系统范围的环境现在被标记为 外部管理环境 (externally managed environment),pip 不再允许进行系统范围的安装。
控件绑定
以下 控件工具包 绑定可用:
- Tkinter — Python 到 Tk GUI 工具包的标准接口。
- Qt for Python (PySide2) — Qt5 的官方 Python 绑定。
- Qt for Python (PySide6) — Qt6 的官方 Python 绑定。
- pyQt — 一套 Qt 的 Python 绑定。
- wxPython — 一个跨平台的 Python GUI 工具包,封装了 wxWidgets。
要将这些与 Python 一起使用,您可能还需要安装相关的组件工具包软件包(例如,要使用 Tkinter,还必须安装 tk)。
技巧与提示
虚拟环境
Python 提供了创建隔离的 虚拟环境 的工具,可以在其中安装软件包,而不会与其他虚拟环境或系统软件包冲突。虚拟环境还可以在同一系统上运行具有不同 Python 版本的应用程序。
有关详情,请参阅 Python/虚拟环境。
Python Shell 中的自动补全
交互式 Shell 默认提供 自动补全。请注意,readline 完成器只会补全全局命名空间中的名称。您可以使用 python-jedi 来获得更丰富的自动补全体验 [1]。
列出为特定 Python 版本构建的软件包
有时了解哪些已安装的软件包是为特定 Python 版本构建的很有用。例如:
$ pacman -Qoq /usr/lib/python3.12
将列出所有为 Python 3.12 版本构建的软件包。当官方 Python 版本更新时,这特别有用。如果想要获取 AUR 中需要重新构建的软件包列表(因为它们可能是为不再安装的 Python 版本构建的),请参阅 #Python 版本更新后找不到模块。
故障排除
Python 版本更新后找不到模块
在将 python 软件包升级到新的次要版本(例如从 3.10 升级到 3.11)后,基于 Python 的应用程序可能会对名为 module_name 的已安装依赖项输出 No module named module_name。
上述情况发生在依赖项在当前 Python 版本中不可用或未安装时。Python 软件包安装在版本化的 site-packages 目录中(如果是系统范围的,则是 /usr/lib/pythonX.Y/site-packages;如果是每个用户的,则是 ~/.local/lib/pythonX.Y/site-packages/,其中 X.Y 是类似于 "3.11" 的版本号)。因此,每当有新的次要版本升级时,使用先前 Python 版本构建的基于 Python 的软件包必须针对新版本重新构建,以便正常使用。
请注意,重新构建非官方软件包(包括从 AUR 安装的基于 Python 的软件包)是用户的责任。请参阅 AUR#更新软件包 和 FAQ#如果我进行全系统升级,共享库有更新,但依赖它的应用程序没有更新怎么办?
参见
官方
- 官方 Python 文档(可以安装 python-docs 软件包以供离线访问。)
- 官方 Python 教程
第三方资源
- Python 编程快速上手 (Automate the Boring Stuff with Python) - 知识共享协议书籍
- Awesome Python - 精选的 Python 资源列表
- Python 简明教程 (A Byte of Python) - 知识共享协议书籍
- Python 破解编程之道 (Cracking Codes With Python) - 免费在线书籍
- Crash into Python - 免费教程
- 使用 Pdb 进行 Python 调试 - 使用 Python 调试器
pdb的指南 - 深入 Python 3 (Dive Into Python) - 知识共享协议书籍
- 流畅的 Python (Fluent Python) - 商业书籍
- Python 编程入门 (Introducing Python) - 商业书籍
- Python 编程:从入门到实践 (Invent Your Own Computer Games with Python) - 免费在线书籍
- Learn Python - 免费交互式教程
- 笨办法学 Python (Learn Python the Hard Way) - 商业书籍
- Pythonspot Python 教程 - 免费在线教程
- 像计算机科学家一样思考 Python (Think Python) - 知识共享协议书籍