安裝 Python 模組

電子郵件:

distutils-sig@python.org

作為一個廣受歡迎的開源開發專案,Python 擁有一個活躍的、由貢獻者和使用者組成的支援社群,他們也以開源許可協議,將其軟體提供給其他 Python 開發者使用。

這使得 Python 使用者可以有效地分享與協作,從他人為常見(有時甚至是罕見!)問題建立的解決方案中受益,並可能將自己的解決方案貢獻到公共資源庫中。

本指南涵蓋了安裝過程。有關建立和分享你自己的 Python 專案的指南,請參閱 Python 打包使用者指南

備註

對於企業和其他機構使用者,請注意,許多組織對於使用和貢獻開源軟體有自己的政策。在使用 Python 提供的分發和安裝工具時,請考慮這些政策。

關鍵術語

  • pip 是首選的安裝程式。從 Python 3.4 開始,它被預設包含在 Python 的二進位制安裝程式中。

  • 虛擬環境 是一個半隔離的 Python 環境,它允許為特定應用程式安裝包,而不是在系統範圍內安裝。

  • venv 是建立虛擬環境的標準工具,自 Python 3.3 起成為 Python 的一部分。從 Python 3.4 開始,它預設在所有建立的虛擬環境中安裝 pip

  • virtualenvvenv 的一個第三方替代品(也是其前身)。它允許在 Python 3.4 之前的版本中使用虛擬環境,這些版本要麼根本不提供 venv,要麼無法在建立的環境中自動安裝 pip

  • Python 包索引(Python Package Index)是一個公共的開源許可軟體包倉庫,供其他 Python 使用者使用。

  • Python 打包管理局(Python Packaging Authority)是由開發者和文件作者組成的團體,負責維護和發展標準的打包工具以及相關的元資料和檔案格式標準。他們在 GitHub 上維護著各種工具、文件和問題跟蹤器。

  • distutils 是最初的構建和分發系統,於 1998 年首次被新增到 Python 標準庫中。雖然直接使用 distutils 的方式正逐漸被淘汰,但它仍然為當前的打包和分發基礎設施奠定了基礎,並且它不僅仍然是標準庫的一部分,其名稱也以其他方式延續(例如用於協調 Python 打包標準開發的郵件列表名稱)。

在 3.5 版更改: 現在推薦使用 venv 來建立虛擬環境。

基本用法

標準的打包工具都被設計為在命令列中使用。

以下命令將從 Python 包索引(Python Package Index)安裝一個模組的最新版本及其依賴項

python -m pip install SomePackage

備註

對於 POSIX 使用者(包括 macOS 和 Linux 使用者),本指南中的示例假定你正在使用 虛擬環境

對於 Windows 使用者,本指南中的示例假定你在安裝 Python 時選擇了調整系統 PATH 環境變數的選項。

也可以直接在命令列中指定一個確切的版本或最低版本。當使用比較運算子(如 ><)或某些其他會被 shell 解釋的特殊字元時,包名和版本號應放在雙引號內

python -m pip install SomePackage==1.0.4    # specific version
python -m pip install "SomePackage>=1.0.4"  # minimum version

通常情況下,如果一個合適的模組已經安裝,再次嘗試安裝它不會有任何效果。升級現有模組必須顯式地請求

python -m pip install --upgrade SomePackage

關於 pip 及其功能的更多資訊和資源,可以在 Python 打包使用者指南 中找到。

虛擬環境的建立是透過 venv 模組完成的。將包安裝到啟用的虛擬環境中使用的是上面展示的命令。

我該如何……?

以下是一些常見任務的快速解答或連結。

… 在 Python 3.4 之前的版本中安裝 pip

Python 從 3.4 版本開始才捆綁 pip。對於更早的版本,pip 需要像 Python 打包使用者指南中所述的那樣進行“引導安裝”。

… 僅為當前使用者安裝包?

python -m pip install 傳遞 --user 選項,將只為當前使用者安裝包,而不是為系統的所有使用者安裝。

… 安裝科學計算相關的 Python 包?

許多科學計算相關的 Python 包有複雜的二進位制依賴,目前不易直接使用 pip 安裝。目前來說,使用者透過其他方式安裝這些包,通常會比嘗試用 pip 安裝更容易。

… 同時使用多個版本的 Python?

在 Linux、macOS 和其他 POSIX 系統上,使用帶版本號的 Python 命令結合 -m 開關來執行相應版本的 pip

python2   -m pip install SomePackage  # default Python 2
python2.7 -m pip install SomePackage  # specifically Python 2.7
python3   -m pip install SomePackage  # default Python 3
python3.4 -m pip install SomePackage  # specifically Python 3.4

也可能存在帶相應版本號的 pip 命令。

在 Windows 上,使用 py Python 啟動器結合 -m 開關

py -2   -m pip install SomePackage  # default Python 2
py -2.7 -m pip install SomePackage  # specifically Python 2.7
py -3   -m pip install SomePackage  # default Python 3
py -3.4 -m pip install SomePackage  # specifically Python 3.4

常見安裝問題

在 Linux 上安裝到系統 Python 中

在 Linux 系統上,Python 安裝通常會作為發行版的一部分被包含。安裝到這個 Python 環境中需要系統的 root 許可權,並且如果某個元件被 pip 意外升級,可能會干擾系統包管理器和系統其他元件的執行。

在這類系統上,當使用 pip 安裝包時,通常最好使用虛擬環境或按使用者安裝。

未安裝 Pip

有可能 pip 預設沒有被安裝。一個可能的修復方法是

python -m ensurepip --default-pip

還有一些關於安裝 pip 的額外資源。

安裝二進位制擴充套件

Python 通常嚴重依賴於基於原始碼的分發,期望終端使用者在安裝過程中從原始碼編譯擴充套件模組。

隨著對二進位制 wheel 格式的支援被引入,以及透過 Python 包索引發布至少適用於 Windows 和 macOS 的 wheel 的能力,這個問題預計會隨著時間的推移而減少,因為使用者將能更經常地安裝預編譯的擴充套件,而不需要自己構建它們。

一些用於安裝科學計算軟體的解決方案,如果它們尚未以預編譯的 wheel 檔案形式提供,也可能有助於獲取其他二進位制擴充套件而無需在本地構建它們。