安裝 Python 模組¶
作為一個普及的開源開發專案,Python 有一個活躍的支持社群,由其貢獻者及使用者組成,而他們也讓他們的軟體可被其他 Python 開發者在開源授權條款下使用。
這樣可以讓 Python 使用者們有效地共享和合作,並受益於其他人對常見(有時甚至是罕見)的問題已經建立的解決方案,更可以在公用社群中潛在地貢獻他們自己的解決方案。
這份指南涵蓋了上述過程中的安裝部分。如果是要建立及分享你自己的 Python 專案,請參考 Python packaging user guide。
備註
對於企業和其他機構的使用者,要注意到,許多組織對於使用和貢獻開源軟體都有自己的政策。在開始使用配備 Python 的發布及安裝工具時,請將那些政策納入考量。
關鍵術語¶
pip 是首選的安裝程式,預設包含在 Python 二進制安裝程式中。
virtual environment(虛擬環境)是一種半隔離的 Python 環境,可以為某個特定應用程式安裝其所需的套件,而不用在整個系統上安裝它們。
venv是建立虛擬環境的標準工具,預設會安裝 pip 到所有被建立的虛擬環境。virtualenvis a third-party alternative (and predecessor) tovenv.Python 套件索引 (PyPI) 是開源授權套件的一個公共儲存庫,其中的套件皆可被其他 Python 使用者所使用。
Python 封裝管理站 (Python Packaging Authority) 是一個由開發者和說明文件作者組成的團隊,負責維護及改進標準封裝工具,以及相關的元資料 (metadata) 和檔案格式標準。他們在 GitHub 平台上維護各種工具、說明文件及問題追蹤系統。
在 3.5 版的變更: 對於建立虛擬環境,現在推薦使用 venv。
基本用法¶
標準封裝工具皆是以能從命令列使用的方式被設計的。
以下指令將從 PyPI 安裝一個模組的最新版本及其依賴套件(dependencies):
python -m pip install SomePackage
備註
對於 POSIX 使用者(包括 macOS 和 Linux 使用者),本指南中的範例皆假設有使用 virtual environment。
對於 Windows 使用者,本指南中的範例皆假設在安裝 Python 時,「可調整系統 PATH 環境變數」的選項已被選取。
在命令列中直接指定一個明確的或最小的版本也是可行的。當使用像是 >、< 的比較運算子,或某些可被 shell 所解釋的其他特殊字元時,套件名稱與版本編號應該要放在雙引號內:
python -m pip install SomePackage==1.0.4 # 明確版本
python -m pip install "SomePackage>=1.0.4" # 最小版本
通常,如果一個合適的模組已被安裝,嘗試再次安裝它將不會有任何效果。要升級現有的模組就必須明確地請求:
python -m pip install --upgrade SomePackage
關於 pip 及其能力的更多資訊和資源,可以在 Python 封裝使用者指南中找到。
虛擬環境的建立是使用 venv 模組來完成。要在一個已啟用的虛擬環境中安裝套件,可使用前面展示的指令。
我該如何...?¶
接下來是關於一些常見任務的快速解答或連結。
...只為目前的使用者安裝套件?¶
把 --user 選項傳給 python -m pip install,這樣將會只為目前使用者而非系統的所有使用者安裝套件。
...安裝科學的 Python 套件?¶
許多科學類 Python 套件都有複雜的二進制依賴套件,且目前不太容易直接使用 pip 安裝。使用其他方法而非嘗試用 pip 來安裝它們,對使用者來說通常會更簡單。
...平行安裝多個 Python 版本並使用它們?¶
在 Linux、macOS 以及其他 POSIX 系統中,使用帶有版本編號的 Python 指令並結合 -m 開關參數 (switch),來運行 pip 的適當副本:
python3 -m pip install SomePackage # 預設 Python 3
python3.14 -m pip install SomePackage # 指定 Python 3.14
使用帶有合適版本編號的 pip 指令,也是可行的。
在 Windows 中,使用 Python 啟動指令 py 並結合 -m 開關參數(switch):
py -3 -m pip install SomePackage # 預設 Python 3
py -3.14 -m pip install SomePackage # 指定 Python 3.14
常見的安裝問題¶
在 Linux 上安裝套件至系統 Python¶
在 Linux 系統,Python 的某個安裝版本通常會被內含在 Linux 的發行版中。要安裝套件到這個 Python 版本上需要系統的 root 權限,並且可能會干擾到系統套件管理器的運作。如果其他系統組件非預期地以 pip 被升級,也會干擾這些組件的運作。
在這樣的系統上,以 pip 安裝套件時,通常較好的方式是使用虛擬環境,或以個別使用者安裝。
未安裝 pip¶
pip 沒有預設被安裝也是有可能的。一個潛在的解法是:
python -m ensurepip --default-pip
這裡還有其他關於安裝 pip的資源。
安裝二進制擴充 (binary extension)¶
Python 曾相當倚賴以原始碼為基礎的發布方式,也會期望使用者在安裝過程的某個階段,從原始碼來編譯擴充模組。
隨著引入二進制 wheel 格式,以及透過 PyPI 發布 wheel 檔案的能力,這個問題正在逐漸消失,因為使用者將能夠更頻繁地安裝預建置(pre-built)的擴充,而不再需要自己建置它們。
有一些解決方案,可用來安裝那些還無法以預建置的 wheel 檔案被使用的科學軟體,這些方案也有助於取得其他的二進制擴充,且無需在本機對它們進行建置。