安裝 Python 模塊?

電子郵箱

distutils-sig@python.org

作為一個(gè)流行的開(kāi)源開(kāi)發(fā)項(xiàng)目,Python擁有一個(gè)活躍的貢獻(xiàn)者和用戶支持社區(qū),這些社區(qū)也可以讓他們的軟件可供其他Python開(kāi)發(fā)人員在開(kāi)源許可條款下使用。

這允許Python用戶有效地共享和協(xié)作,從其他人已經(jīng)創(chuàng)建的解決方案中受益于常見(jiàn)(有時(shí)甚至是罕見(jiàn)的)問(wèn)題,以及可以提供他們自己的解決方案。

本指南涵蓋了分發(fā)部分的流程。有關(guān)安裝其他Python項(xiàng)目的指南,請(qǐng)參閱 安裝指南。

備注

對(duì)于企業(yè)和其他機(jī)構(gòu)用戶,請(qǐng)注意許多組織都有自己的政策來(lái)使用和貢獻(xiàn)開(kāi)源軟件。在使用Python提供的分發(fā)和安裝工具時(shí),請(qǐng)考慮這些政策。

關(guān)鍵術(shù)語(yǔ)?

  • pip 是首選的安裝程序。從Python 3.4開(kāi)始,它默認(rèn)包含在Python二進(jìn)制安裝程序中。

  • virtual environment 是一種半隔離的 Python 環(huán)境,允許為特定的應(yīng)用安裝各自的包,而不是安裝到整個(gè)系統(tǒng)。

  • venv 是創(chuàng)建虛擬環(huán)境的標(biāo)準(zhǔn)工具,從 Python 3.3 開(kāi)始成為 Python 的組成部分。 從 Python 3.4 開(kāi)始,它會(huì)默認(rèn)安裝 pip 到所創(chuàng)建的全部虛擬環(huán)境。

  • virtualenvvenv 的第三方替代(及其前身)。 它允許在 Python 3.4 之前的版本中使用虛擬環(huán)境,那些版本或是完全不提供 venv,或是不會(huì)自動(dòng)安裝 pip 到所創(chuàng)建的虛擬環(huán)境。

  • The Python Package Index is a public repository of open source licensed packages made available for use by other Python users.

  • Python Packaging Authority 是負(fù)責(zé)標(biāo)準(zhǔn)打包工具以及相關(guān)元數(shù)據(jù)和文件格式標(biāo)準(zhǔn)維護(hù)與改進(jìn)的開(kāi)發(fā)人員和文檔作者團(tuán)隊(duì)。 他們基于 GitHubBitbucket 這兩個(gè)平臺(tái)維護(hù)著各種工具、文檔和問(wèn)題追蹤系統(tǒng)。

  • distutils 是最初的構(gòu)建和分發(fā)系統(tǒng),于 1998 年首次加入 Python 標(biāo)準(zhǔn)庫(kù)。 雖然直接使用 distutils 的方式已被淘汰,它仍然是當(dāng)前打包和分發(fā)架構(gòu)的基礎(chǔ),而且它不僅仍然是標(biāo)準(zhǔn)庫(kù)的一部分,這個(gè)名稱還以其他方式存在(例如用于協(xié)調(diào) Python 打包標(biāo)準(zhǔn)開(kāi)發(fā)流程的郵件列表就以此命名)。

在 3.5 版更改: 現(xiàn)在推薦使用 venv 來(lái)創(chuàng)建虛擬環(huán)境。

基本使用?

標(biāo)準(zhǔn)打包工具完全是針對(duì)命令行使用方式來(lái)設(shè)計(jì)的。

The following command will install the latest version of a module and its dependencies from the Python Package Index:

python -m pip install SomePackage

備注

For POSIX users (including macOS and Linux users), the examples in this guide assume the use of a virtual environment.

對(duì)于 Windows 用戶,本指南中的示例假定在安裝 Python 時(shí)選擇了修改系統(tǒng) PATH 環(huán)境變量。

在命令行中指定一個(gè)準(zhǔn)確或最小版本也是可以的。 當(dāng)使用比較運(yùn)算符例如 >, < 或其他某些可以被終端所解析的特殊字符時(shí),包名稱與版本號(hào)應(yīng)當(dāng)用雙引號(hào)括起來(lái):

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

通常,如果一個(gè)匹配的模塊已安裝,嘗試再次安裝將不會(huì)有任何效果。 要升級(jí)現(xiàn)有模塊必須顯式地發(fā)出請(qǐng)求:

python -m pip install --upgrade SomePackage

更多有關(guān) pip 及其功能的信息和資源可以在 Python 軟件包用戶指南 中找到。

虛擬環(huán)境的創(chuàng)建可使用 venv 模塊來(lái)完成。 向已激活虛擬環(huán)境安裝軟件包可使用上文所介紹的命令。

我應(yīng)如何 ...??

這是一些常見(jiàn)任務(wù)的快速解答或相關(guān)鏈接。

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

Python 捆綁 pip 是從 Python 3.4 才開(kāi)始的。 對(duì)于更早的版本,pip 需要“引導(dǎo)安裝”,具體說(shuō)明參見(jiàn) Python 軟件包用戶指南。

... 只為當(dāng)前用戶安裝軟件包??

--user 選項(xiàng)傳入 python -m pip install 將只為當(dāng)前用戶而非為系統(tǒng)中的所有用戶安裝軟件包。

... 安裝科學(xué)計(jì)算類 Python 軟件包??

許多科學(xué)計(jì)算類 Python 軟件包都有復(fù)雜的二進(jìn)制編譯文件依賴,直接使用 pip 安裝目前并不太容易。 在當(dāng)前情況下,通過(guò) 其他方式 而非嘗試用 pip 安裝這些軟件包對(duì)用戶來(lái)說(shuō)通常會(huì)更容易。

... 使用并行安裝的多個(gè) Python 版本??

On Linux, macOS, and other POSIX systems, use the versioned Python commands in combination with the -m switch to run the appropriate copy of 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

也可以使用帶特定版本號(hào)的 pip 命令。

在 Windows 中,使用 py Python 啟動(dòng)器命令配合 -m 開(kāi)關(guān)選項(xiàng):

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

常見(jiàn)的安裝問(wèn)題?

在 Linux 的系統(tǒng) Python 版本上安裝?

Linux 系統(tǒng)通常會(huì)將某個(gè) Python 版本作為發(fā)行版的一部分包含在內(nèi)。 將軟件包安裝到這個(gè) Python 版本上需要系統(tǒng) root 權(quán)限,并可能會(huì)干擾到系統(tǒng)包管理器和其他系統(tǒng)組件的運(yùn)作,如果這些組件在使用 pip 時(shí)被意外升級(jí)的話。

在這樣的系統(tǒng)上,通過(guò) pip 安裝軟件包通常最好是使用虛擬環(huán)境或分用戶安裝。

未安裝 pip?

默認(rèn)情況下可能未安裝 pip,一種可選解決方案是:

python -m ensurepip --default-pip

還有其他資源可用來(lái) 安裝 pip

安裝二進(jìn)制編譯擴(kuò)展?

Python 通常非常依賴基于源代碼的發(fā)布方式,也就是期望最終用戶在安裝過(guò)程中使用源碼來(lái)編譯生成擴(kuò)展模塊。

With the introduction of support for the binary wheel format, and the ability to publish wheels for at least Windows and macOS through the Python Package Index, this problem is expected to diminish over time, as users are more regularly able to install pre-built extensions rather than needing to build them themselves.

某些用來(lái)安裝 科學(xué)計(jì)算類軟件包 的解決方案對(duì)于尚未提供預(yù)編譯 wheel 文件的那些擴(kuò)展模塊來(lái)說(shuō),也有助于用戶在無(wú)需進(jìn)行本機(jī)編譯的情況下獲取二進(jìn)制碼擴(kuò)展模塊。