Python
- Python 是一种解释型、交互式、面向对象的编程语言。 它包含了模块、异常、动态类型、高层级动态数据类型以及类等特性。 在面向对象编程以外它还支持多种编程范式,例如过程式和函数式编程等。 Python 结合了超强的功能和极清晰的语法。 它带有许多系统调用和库以及多种窗口系统的接口,并且能用 C 或 C++ 来进行扩展。 它还可用作需要可编程接口的应用程序的扩展语言。 最后,Python 非常易于移植:它可以在包括 Linux 和 macOS 在内的许多 Unix 变种以及 Windows 上运行。
安装[编辑 | 编辑源代码]
其它版本[编辑 | 编辑源代码]
Python 的旧版本和预发布版本可以通过 AUR 获得,这对于无法在当前版本上运行的旧应用程序、打算在其他版本上运行的程序,或者仅仅出于好奇,可能会很有用:
- Python 3.13:python313AUR 预发布版本
- 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包 可用于轻松安装和切换多个 Python 版本。
在 AUR 上搜索 python<版本号(不带小数点)>
可以找到用于旧版本的额外模块/库,例如搜索 python39
可以找到 3.9 版本的模块。
可以从 https://www.python.org/downloads/ 下载任意版本的源代码。
替代实现[编辑 | 编辑源代码]
python包 包会安装 CPython, 是 Python 的参考实现,而同时还有多种其它的实现。这些实现通常基于旧版本的 Python 而并不完全与 CPython 兼容。
Arch Linux 官方仓库与 AUR 包含的实现:
- PyPy — 使用 Python 编写的 Python 实现,较 CPython 而言具有速度和内存用量上的优势。
- Jython — 使用 Java 编写的 Python 实现,可以用于将 Python 脚本嵌入到 Java 程序中,或是在 Python 程序中使用 Java 库。
- micropython — 用于微控制器的 Python 实现,包含了 Python 标准库的一小块子集,并针对在微控制器或是受限环境中运行进行了优化。
- IronPython — 与 .NET 紧密集成的 Python 实现,可以调用 .NET 库,同时允许 .NET 程序使用 Python 库。
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 是一个集开发、构建、发布和依赖管理于一体的工具。
- Conda — Conda 提供适用于任何语言的软件包、依赖和环境管理。Conda 最初为 Python 而创建,广泛用于科学计算、数据科学和机器学习。Conda 是 miniforge 社区 Python 发行版以及 Anaconda 和 Miniconda Python 发行版的软件包管理器。
- uv — 使用 Rust 编写的极快的 Python 软件包安装器和解析器。设计为常见 pip 和 pip-tools 工作流程的直接替代品。
pip
、pipx
、poetry
和 uv
从 Python 软件包索引(PyPI)和其他索引中安装软件包。Conda 和 Miniconda 使用 Anaconda 仓库。
作为虚拟环境的替代方案,可以使用 pip install --user
将软件包安装到用户方案,而不是 /usr
。这种方法按用户而非项目分隔软件包,但虚拟环境通常是更好的选择。
软件包管理的官方最佳实践见 Python 打包用户指南(Python Packaging User Guide)。
历史说明[编辑 | 编辑源代码]
之前,easy_install
(python-setuptools包 的一部分)用于安装以 Egg 格式分发的软件包。easy_install
和 Egg 已被 pip 和 Wheel 替代。详见 pip vs easy_install 和软件包格式(Package Formats)。
早期版本的 pip
可以在系统范围内安装第三方软件包,但这导致了 PEP668 中提到的诸多问题。现在,系统范围的环境被标记为外部管理环境(externally managed environment),pip
不再允许系统范围的安装。
GUI 绑定[编辑 | 编辑源代码]
以下是可用的控件工具包(GUI 工具包)绑定:
- Tkinter — Tk GUI 工具包的标准 Python 接口。
- Qt for Python (PySide2) — Qt5 的官方 Python 绑定。
- Qt for Python (PySide6) — Qt6 的官方 Python 绑定。
- pyQt — Qt 的 Python 绑定集合。
- wxPython — 封装 wxWidgets 的跨平台 Python GUI 工具包。
若要在 Python 中使用它们,可能还需要安装相关的控件工具包软件包(例如,必须同时安装 tk包 才能使用 Tkinter)。
提示与技巧[编辑 | 编辑源代码]
虚拟环境[编辑 | 编辑源代码]
Python 提供了创建隔离的虚拟环境的工具,可以在其中安装软件包,而不与其他虚拟环境或系统软件包发生冲突。虚拟环境还可以在同一系统上运行不同版本的 Python。
详见 Python/虚拟环境。
在 Python Shell 中实现 Tab 补全功能[编辑 | 编辑源代码]
Tab 自动补全在交互式 shell 中默认可用。需要注意,readline 补全器只能补全全局命名空间中的名称。python-jedi包 提供了更丰富的 Tab 自动补全体验 [1]。
问题解决[编辑 | 编辑源代码]
更新 Python 后找不到模块[编辑 | 编辑源代码]
在升级 python包 到新版本(例如从 3.10 升级到 3.11)后,基于 Python 的应用程序可能会输出 No module named 模块名称
错误,表示已安装的依赖项 模块名称
不可用。
这种情况发生在某个依赖项不支持当前的 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#更新包和[[常见问题#Q)_执行pacman -Syu
时,终端显示某个共享库需要升级,但依赖它的程序没有升级,我该怎么做呢?]]。
另见[编辑 | 编辑源代码]
官方[编辑 | 编辑源代码]
- 官方 Python 文档(可以通过 python-docs包 安装以离线阅读。)
- 官方 Python 教程
第三方[编辑 | 编辑源代码]
- Automate the Boring Stuff with Python⸺知识共享书籍
- Awesome Python⸺精选 Python 资源列表
- A Byte of Python⸺知识共享书籍
- Cracking Codes With Python⸺免费在线书籍
- Crash into Python⸺免费教程
- Python Debugging With Pdb⸺
pdb
(Python 官方调试器)教程 - Dive Into Python⸺知识共享书籍
- Fluent Python⸺商业书籍
- Introducing Python⸺商业书籍
- Invent Your Own Computer Games with Python⸺免费在线书籍
- Learn Python⸺免费交互式教程
- Learn Python the Hard Way⸺商业书籍
- Pythonspot Python Tutorials⸺免费在线教程
- Think Python⸺知识共享书籍