Python
出自 什么是 Python?
- Python 是一种解释型、交互式、面向对象的编程语言。它融入了模块、异常、动态类型、非常高级的动态数据类型和类。它支持面向对象编程之外的多种编程范式,例如过程式和函数式编程。Python 将非凡的威力与非常清晰的语法相结合。它具有许多系统调用和库的接口,以及各种窗口系统,并且可以在 C 或 C++ 中扩展。它也可用作需要可编程接口的应用程序的扩展语言。最后,Python 是可移植的:它可以在许多 Unix 变体(包括 Linux 和 macOS)以及 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<不带句点的版本号>
,例如,搜索 Python 3.9 模块的 python39
。
您还可以从 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 — Python 编程语言的一种实现,它与 .NET 紧密集成。它可以使用 .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 打包用户指南。
历史记录
在历史上,easy_install(python-setuptools 的一部分)用于安装以 Eggs 形式分发的软件包。easy_install 和 Eggs 已被 pip 和 Wheels 取代。 有关更多信息,请参阅 pip vs easy_install 和 软件包格式。
以前版本的 pip 可以系统范围内安装第三方软件包,但这导致了 PEP668 中概述的许多问题。 系统范围的环境现在被标记为 外部管理的环境,并且 pip 不再允许系统范围的安装。
小部件绑定
以下 小部件工具包 绑定可用
- Tkinter — 用于 Tk GUI 工具包的标准 Python 接口。
- 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 中的 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 教程
第三方
- 用 Python 自动化无聊的东西 - 知识共享书籍
- Awesome Python - 精选的 Python 资源列表
- Python 字节 - 知识共享书籍
- 用 Python 破解密码 - 免费在线书籍
- Crash into Python - 免费教程
- 使用 Pdb 进行 Python 调试 - 使用
pdb
(Python 调试器)指南 - 深入 Python - 知识共享书籍
- 流畅的 Python - 商业书籍
- Python 入门 - 商业书籍
- 用 Python 创造你自己的计算机游戏 - 免费在线书籍
- 学习 Python - 免费互动教程
- 艰难地学习 Python - 商业书籍
- Pythonspot Python 教程 - 免费在线教程
- Think Python - 知识共享书籍