安裝 Python 模塊?
作為一個流行的開源開發(fā)項目,Python擁有一個活躍的貢獻者和用戶支持社區(qū),這些社區(qū)也可以讓他們的軟件可供其他Python開發(fā)人員在開源許可條款下使用。
這允許Python用戶有效地共享和協(xié)作,從其他人已經(jīng)創(chuàng)建的解決方案中受益于常見(有時甚至是罕見的)問題,以及可以提供他們自己的解決方案。
本指南涵蓋了分發(fā)部分的流程。有關(guān)安裝其他Python項目的指南,請參閱 安裝指南。
注解
對于企業(yè)和其他機構(gòu)用戶,請注意許多組織都有自己的政策來使用和貢獻開源軟件。在使用Python提供的分發(fā)和安裝工具時,請考慮這些政策。
關(guān)鍵術(shù)語?
pip是首選的安裝程序。從Python 3.4開始,它默認包含在Python二進制安裝程序中。virtual environment 是一種半隔離的 Python 環(huán)境,允許為特定的應(yīng)用安裝各自的包,而不是安裝到整個系統(tǒng)。
venv是創(chuàng)建虛擬環(huán)境的標準工具,從 Python 3.3 開始成為 Python 的組成部分。 從 Python 3.4 開始,它會默認安裝pip到所創(chuàng)建的全部虛擬環(huán)境。virtualenv是venv的第三方替代(及其前身)。 它允許在 Python 3.4 之前的版本中使用虛擬環(huán)境,那些版本或是完全不提供venv,或是不會自動安裝pip到所創(chuàng)建的虛擬環(huán)境。Python Packaging Index 是一個由 Python 用戶向其他用戶發(fā)布開源許可軟件包的公共倉庫。
Python Packaging Authority 是負責(zé)標準打包工具以及相關(guān)元數(shù)據(jù)和文件格式標準維護與改進的開發(fā)人員和文檔作者團隊。 他們基于 GitHub 和 Bitbucket 這兩個平臺維護著各種工具、文檔和問題追蹤系統(tǒng)。
distutils是最初的構(gòu)建和分發(fā)系統(tǒng),于 1998 年首次加入 Python 標準庫。 雖然直接使用distutils的方式已被淘汰,它仍然是當前打包和分發(fā)架構(gòu)的基礎(chǔ),而且它不僅仍然是標準庫的一部分,這個名稱還以其他方式存在(例如用于協(xié)調(diào) Python 打包標準開發(fā)流程的郵件列表就以此命名)。
3.6 版后已移除: pyvenv 是 Python 3.3 和 3.4 中創(chuàng)建虛擬環(huán)境的推薦工具,不過 在 Python 3.6 中已棄用。
在 3.5 版更改: 現(xiàn)在推薦使用 venv 來創(chuàng)建虛擬環(huán)境。
基本使用?
標準打包工具完全是針對命令行使用方式來設(shè)計的。
以下命令將從 Python Packaging Index 安裝一個模塊的最新版本及其依賴項:
python -m pip install SomePackage
注解
對于 POSIX 用戶(包括 Mac OS X 和 Linux 用戶)本指南中的示例假定使用了 virtual environment。
對于 Windows 用戶,本指南中的示例假定在安裝 Python 時選擇了修改系統(tǒng) PATH 環(huán)境變量。
在命令行中指定一個準確或最小版本也是可以的。 當使用比較運算符例如 >, < 或其他某些可以被終端所解析的特殊字符時,包名稱與版本號應(yīng)當用雙引號括起來:
python -m pip install SomePackage==1.0.4 # specific version
python -m pip install "SomePackage>=1.0.4" # minimum version
通常,如果一個匹配的模塊已安裝,嘗試再次安裝將不會有任何效果。 要升級現(xiàn)有模塊必須顯式地發(fā)出請求:
python -m pip install --upgrade SomePackage
更多有關(guān) pip 及其功能的信息和資源可以在 Python 軟件包用戶指南 中找到。
虛擬環(huán)境的創(chuàng)建可使用 venv 模塊來完成。 向已激活虛擬環(huán)境安裝軟件包可使用上文所介紹的命令。
我應(yīng)如何 ...??
這是一些常見任務(wù)的快速解答或相關(guān)鏈接。
... 在 Python 3.4 之前的 Python 版本中安裝 pip ??
Python 捆綁 pip 是從 Python 3.4 才開始的。 對于更早的版本,pip 需要“引導(dǎo)安裝”,具體說明參見 Python 軟件包用戶指南。
... 只為當前用戶安裝軟件包??
將 --user 選項傳入 python -m pip install 將只為當前用戶而非為系統(tǒng)中的所有用戶安裝軟件包。
... 安裝科學(xué)計算類 Python 軟件包??
許多科學(xué)計算類 Python 軟件包都有復(fù)雜的二進制編譯文件依賴,直接使用 pip 安裝目前并不太容易。 在當前情況下,通過 其他方式 而非嘗試用 pip 安裝這些軟件包對用戶來說通常會更容易。
... 使用并行安裝的多個 Python 版本??
在 Linux, Mac OS X 以及其他 POSIX 系統(tǒng)中,使用帶版本號的 Python 命令配合 -m 開關(guān)選項來運行特定版本的 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 開關(guān)選項:
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 的系統(tǒng) Python 版本上安裝?
Linux 系統(tǒng)通常會將某個 Python 版本作為發(fā)行版的一部分包含在內(nèi)。 將軟件包安裝到這個 Python 版本上需要系統(tǒng) root 權(quán)限,并可能會干擾到系統(tǒng)包管理器和其他系統(tǒng)組件的運作,如果這些組件在使用 pip 時被意外升級的話。
在這樣的系統(tǒng)上,通過 pip 安裝軟件包通常最好是使用虛擬環(huán)境或分用戶安裝。
安裝二進制編譯擴展?
Python 通常非常依賴基于源代碼的發(fā)布方式,也就是期望最終用戶在安裝過程中使用源碼來編譯生成擴展模塊。
隨著對二進制碼 wheel 格式支持的引入,以及通過 Python Packaging Index 至少發(fā)布 Windows 和 Mac OS X 版的 wheel 文件,預(yù)計此問題將逐步得到解決,因為用戶將能夠更頻繁地安裝預(yù)編譯擴展,而不再需要自己編譯它們。
某些用來安裝 科學(xué)計算類軟件包 的解決方案對于尚未提供預(yù)編譯 wheel 文件的那些擴展模塊來說,也有助于用戶在無需進行本機編譯的情況下獲取二進制碼擴展模塊。
