Python - Arch Linux 中文维基

跳至內容

# Python

出自 Arch Linux 中文维基

相關文章

- Python 打包準則
- Python/虛擬環境
- mod_wsgi
- Django
- 應用程式列表/工具#Python IDE

翻譯狀態：

- 本文（或部分內容）譯自 Python，最近一次同步於 2024-11-30，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

來自「什麼是 Python？」：

  Python 是一種解釋型、交互式、面向對象的程式語言。 它包含了模塊、異常、動態類型、高層級動態數據類型以及類等特性。 在面向對象編程以外它還支持多種編程範式，例如過程式和函數式編程等。 Python 結合了超強的功能和極清晰的語法。 它帶有許多系統調用和庫以及多種窗口系統的接口，並且能用 C 或 C++ 來進行擴展。 它還可用作需要可編程接口的應用程式的擴展語言。 最後，Python 非常易於移植：它可以在包括 Linux 和 macOS 在內的許多 Unix 變種以及 Windows 上運行。

## 安裝

安裝 python包。

### 其它版本

Python 的舊版本和預發布版本可以通過 AUR 獲得，這對於無法在當前版本上運行的舊應用程式、打算在其他版本上運行的程序，或者僅僅出於好奇，可能會很有用：

Feature 版本（接受新特性）和Prerelease 版本（不接受新特性）

- Python 3.15: python315AUR （Prerelease 版本）

Bugfix 版本（也叫維護版本或穩定版本）

- Python 3.14：python314-freethreadedAUR（自由線程——移除了全局解釋器鎖(GIL)）
- Python 3.13: python313AUR
- Python 3.13：python313-freethreadedAUR（自由線程）

Security 版本（只接受安全修復）

- Python 3.12：python312AUR
- Python 3.11：python311AUR
- Python 3.10：python310AUR

End-of-life 版本（不再維護）

- Python 3.9：python39AUR
- 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.10 的二進制文件名為 `python3.10`。pyenv包 可用於輕鬆安裝和切換多個 Python 版本。

在 AUR 上搜索 `python<版本號（不帶小數點）>` 可以找到用於舊版本的額外模塊/庫，例如搜索 `python310` 可以找到 3.10 版本的模塊。

可以從 https://www.python.org/downloads/ 下載任意版本的原始碼。

### 替代實現

python包 包會安裝 CPython， 是 Python 的參考實現，而同時還有多種其它的實現。這些實現通常基於舊版本的 Python 而並不完全與 CPython 兼容。

Arch Linux 官方倉庫與 AUR 包含的實現：

- PyPy — 使用 Python 編寫的 Python 實現，較 CPython 而言具有速度和內存用量上的優勢。

  https://www.pypy.org || pypy包、pypy3包

- Jython — 使用 Java 編寫的 Python 實現，可以用於將 Python 腳本嵌入到 Java 程序中，或是在 Python 程序中使用 Java 庫。

  https://www.jython.org/ || jython包

- micropython — 用於微控制器的 Python 實現，包含了 Python 標準庫的一小塊子集，並針對在微控制器或是受限環境中運行進行了優化。

  https://micropython.org/ || micropythonAUR

- IronPython — 與 .NET 緊密集成的 Python 實現，可以調用 .NET 庫，同時允許 .NET 程序使用 Python 庫。

  https://ironpython.net || ironpython-gitAUR

Python 還有其它多種實現。一些（例如 Cinder）在大型科技公司內部得到使用。還有一些在歷史上具有重要意義，但因最流行的實現已有改進而不再維護。

### 替代 shell

python包 軟體包包含一個交互式 Python shell/REPL，可以通過 `python` 命令啟動，還可以使用以下 shell：

- bpython — 為 Python 解釋器提供美觀界面。

  https://bpython-interpreter.org/ || bpython包

- IPython — 功能強大的交互式 Python Shell。

  https://ipython.org/ || ipython包

- Jupyter — 由 IPython 提供支持的基於 Web 的計算應用程式。

  https://jupyter.org/ || jupyterlab包、jupyter-notebook包

- ptpython — 基於 prompt-toolkit 構建的高級 Python REPL。

  https://github.com/prompt-toolkit/ptpython || ptpythonAUR

## 軟體包管理

在 Arch Linux 上，有多種方法可以安裝 Python 軟體包。

### Arch 官方倉庫

大量流行的軟體包可以在官方倉庫和 AUR 中找到。這是安裝系統範圍內軟體包的首選方式，也是 Arch Linux 官方支持的唯一方法。

### 第三方軟體包

開發者在使用 Python 時，可能需要使用 Arch 倉庫中沒有的軟體包或特定版本。推薦的做法是為每個項目使用單獨的虛擬環境隔離環境，避免與 `/usr` 中的系統軟體包發生衝突。在虛擬環境中安裝軟體包可以使用以下工具：

- pip(1) — Python 官方的軟體包安裝工具。

  https://pip.pypa.io/ || python-pip包

- pipx — 專門的軟體包安裝工具，僅用於安裝具有 CLI 入口點的軟體包（而非庫包）。

  https://pypa.github.io/pipx/ || python-pipx包

- Poetry — 簡化 Python 依賴管理和打包的工具。Poetry 是一個集開發、構建、發布和依賴管理於一體的工具。

  https://python-poetry.org/ || python-poetry包

- Conda — Conda 提供適用於任何語言的軟體包、依賴和環境管理。Conda 最初為 Python 而創建，廣泛用於科學計算、數據科學和機器學習。Conda 是 miniforge 社區 Python 發行版以及 Anaconda 和 Miniconda Python 發行版的軟體包管理器。

  https://docs.conda.io || python-condaAUR

- uv — 使用 Rust 編寫的極快的 Python 軟體包安裝器和解析器。設計為常見 pip 和 pip-tools 工作流程的直接替代品。

  https://docs.astral.sh/uv/ || uv包

`pip`、`pipx`、`poetry` 和 `uv` 從 Python 軟體包索引（PyPI）和其他索引中安裝軟體包。Conda 和 Miniconda 使用 Anaconda 倉庫。

作為虛擬環境的替代方案，可以使用 `pip install --user` 將軟體包安裝到用戶方案，而不是 `/usr`。這種方法按用戶而非項目分隔軟體包，但虛擬環境通常是更好的選擇。

軟體包管理的官方最佳實踐見 Python 打包用戶指南（Python Packaging User Guide）。

注意：還有一些工具將 `pip` 與 `pacman` 集成，通過為指定的 PyPI 軟體包自動生成 PKGBUILD 文件來實現，詳見創建軟體包#PKGBUILD 生成器。
提示：pipenv 提供用於管理 Pipfile、`pip` 和 virtualenv 的統一的 CLI，可以通過 python-pipenv包 獲取。

### 歷史說明

之前，`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 接口。

  https://docs.python.org/3/library/tkinter.html || python包

- Qt for Python (PySide2) — Qt5 的官方 Python 綁定。

  https://www.qt.io/qt-for-python || pyside2AUR、pyside2-toolsAUR

- Qt for Python (PySide6) — Qt6 的官方 Python 綁定。

  https://www.qt.io/qt-for-python || pyside6包、pyside6-tools包

- pyQt — Qt 的 Python 綁定集合。

  https://riverbankcomputing.com/software/pyqt/intro || python-pyqt5包、python-pyqt6包

- PyGObject — 用於基於 GObject 的庫（如 GTK、GStreamer、WebKitGTK、GLib 和 GIO）的 Python 綁定。

  https://pygobject.readthedocs.io/ || python-gobject包

- wxPython — 封裝 wxWidgets 的跨平台 Python GUI 工具包。

  https://wxpython.org/ || python-wxpython包

若要在 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⸺知識共享書籍

分類：​

- 程式語言

Python
新增話題