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