Python
- Python 是一种解释型、交互式、面向对象的编程语言。它融入了模块、异常、动态类型、非常高级的动态数据类型和类。除了面向对象编程之外,它还支持多种编程范式,例如过程式和函数式编程。Python 将非凡的威力与非常清晰的语法相结合。它具有许多系统调用和库的接口,以及各种窗口系统,并且可以在 C 或 C++ 中扩展。它也可以用作需要可编程接口的应用程序的扩展语言。最后,Python 是可移植的:它可以在包括 Linux 和 macOS 在内的多种 Unix 变体以及 Windows 上运行。
安装
其他版本
Python 以前和未来的版本可以通过 AUR 获取。这些版本对于需要特定版本的应用程序或项目,或者仅仅出于好奇心都很有用
- Python 3.14: python314AUR 预发布版
- Python 3.12: python312AUR
- Python 3.11: python311AUR
- Python 3.10: python310AUR
- Python 3.9: python39AUR
- Python 3.8: python38AUR (不再维护)
- Python 3.7: python37AUR (不再维护)
- Python 3.6: python36AUR (不再维护)
- Python 2.7: python2AUR (不再维护)
这些软件包中的每一个都安装一个以版本号命名的不同二进制文件,例如 Python 3.9 的 python3.9,允许系统上共存多个版本。您还可以使用 pyenv 或 uv 来轻松安装和切换 Python 的多个版本。
旧版本 Python 的额外模块/库可以在 AUR 上找到,方法是搜索 python<不带句点的版本号>
,例如,搜索 python39
以查找 Python 3.9 模块。
您还可以从 https://pythonlang.cn/downloads/ 页面下载任何版本的源代码。
替代实现
python 软件包安装了 CPython,Python 的参考实现。但是,还有其他可用的实现。这些实现通常基于旧版本的 Python,并且与 CPython 不完全兼容。
Arch Linux 上可用的实现包括
- PyPy — 一种用 Python 编写的 Python 实现。与 CPython 相比,它在速度和内存使用方面具有优势。
- Jython — 一种用 Java 编写的 Python 语言实现。它可以用于将 Python 脚本嵌入到 Java 程序中,或在 Python 程序中使用 Java 库。
- micropython — 用于微控制器的 Python。它包含 Python 标准库的一个小子集,并针对在微控制器和受限环境中运行进行了优化。
- IronPython — 一种与 .NET 紧密集成的 Python 编程语言实现。它可以使用 .NET 库,并允许 .NET 程序使用 Python 库。
存在更多实现。一些实现,例如 Cinder,在大型科技公司内部使用。其他一些在历史上值得注意,但由于最流行的实现的改进而不再维护。
替代 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 软件包索引和其他索引安装软件包。Conda 和 Miniconda 使用 Anaconda 软件仓库。
作为虚拟环境的替代方案,可以使用 pip install --user
将软件包安装到 用户方案 中,而不是 /usr
。这会将软件包按用户而不是按项目分隔。虚拟环境通常是更好的选择。
有关软件包管理的官方最佳实践,请参阅 Python Packaging User Guide。
历史记录
历史上,easy_install (是 python-setuptools 的一部分) 被用来安装以 Eggs 形式分发的软件包。easy_install 和 Eggs 已经被 pip 和 Wheels 所取代。更多信息请参阅 pip vs easy_install 和 Package Formats。
早期版本的 pip 可能会在系统范围内安装第三方软件包,但这导致了 PEP668 中概述的许多问题。系统范围的环境现在被标记为 外部管理的环境,并且 pip 不再允许系统范围的安装。
Widget 绑定
以下 widget 工具包 绑定可用
- Tkinter — 用于 Tk GUI 工具包的标准 Python 接口。
- Qt for Python (PySide2) — 用于 Qt5 的官方 Python 绑定。
- Qt for Python (PySide6) — 用于 Qt6 的官方 Python 绑定。
- pyQt — 一组用于 Qt 的 Python 绑定。
- wxPython — 一个用于 Python 的跨平台 GUI 工具包,它封装了 wxWidgets。
要将这些与 Python 一起使用,您可能还需要安装相关的 widget 工具包软件包(例如,要使用 Tkinter,还必须安装 tk)。
技巧和窍门
虚拟环境
Python 提供了创建隔离的虚拟环境的工具,软件包可以安装到这些环境中,而不会与其他虚拟环境或系统软件包冲突。虚拟环境还可以在同一系统上运行使用不同 Python 版本的应用程序。
有关详细信息,请参阅 Python/Virtual environment。
Python shell 中的 Tab 补全
Tab 补全 在交互式 shell 中默认可用。请注意,readline 补全器将仅补全全局命名空间中的名称。您可以使用 python-jedi 以获得更丰富的 Tab 补全体验 [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 教程
第三方
- Automate the Boring Stuff with Python - Creative Commons 书籍
- Awesome Python - 精选的 Python 资源列表
- A Byte of Python - Creative Commons 书籍
- Cracking Codes With Python - 免费在线书籍
- Crash into Python - 免费教程
- Python Debugging With Pdb - 使用
pdb
(Python 调试器)指南 - Dive Into Python - Creative Commons 书籍
- Fluent Python - 商业书籍
- Introducing Python - 商业书籍
- Invent Your Own Computer Games with Python - 免费在线书籍
- Learn Python - 免费互动教程
- Learn Python the Hard Way - 商业书籍
- Pythonspot Python Tutorials - 免费在线教程
- Think Python - Creative Commons 书籍