需求檔案格式

使用 pip install 時,需求檔案列出要由 pip 安裝的項目清單。使用這種格式的檔案通常稱為「pip requirements.txt 檔案」,因為這些檔案通常命名為 requirements.txt(儘管這不是需求)。

注意

需求檔案格式與 pip 的許多內部細節緊密相關(例如,pip 的命令列選項)。基本格式相對穩定且具有可攜性,但如同這裡所述,完整的語法僅供 pip 使用,其他工具在用於自家目的之前應將這點考慮進去。

範例

# This is a comment, to show how #-prefixed lines are ignored.
# It is possible to specify requirements as plain names.
pytest
pytest-cov
beautifulsoup4

# The syntax supported here is the same as that of requirement specifiers.
docopt == 0.6.1
requests [security] >= 2.8.1, == 2.8.* ; python_version < "2.7"
urllib3 @ https://github.com/urllib3/urllib3/archive/refs/tags/1.26.8.zip

# It is possible to refer to other requirement files or constraints files.
-r other-requirements.txt
-c constraints.txt

# It is possible to refer to specific local distribution paths.
./downloads/numpy-1.9.2-cp34-none-win32.whl

# It is possible to refer to URLs.
http://wxpython.org/Phoenix/snapshot-builds/wxPython_Phoenix-3.0.3.dev1820+49a8884-cp34-none-win_amd64.whl

結構

需求檔案的每一行都表示要安裝的項目或傳遞給 pip install 的引數。支援下列形式

  • [[--選項]...]

  • <需求 規格>

  • <檔案 網址/路徑>

  • [-e] <本機 專案 路徑>

  • [-e] <VCS 專案 網址>

有關需求規格的詳細資訊,請參閱 需求規格。如需檢視所有這些形式的範例,請參閱 範例

編碼

需求檔案預設採用 utf-8 編碼,同時也支援 PEP 263 樣式註解以變更編碼(亦即 # -*- coding: <編碼 名稱> -*-)。

行串接

以未跳脫的 \ 結尾的行會視為行串接,而其後的換行符號基本上會被忽略。

註解

# 開頭的行視為註解並忽略。緊接在空白之後的 # 會導致 # 和本行剩餘部分皆視為註解。

處理完行連接之後,才會移除註解。

支援的選項

需求檔案僅支援下列特定的 pip 安裝選項。

全域選項

以下選項會影響整個 pip install 執行,而且必須在個別行上指定。

範例

若要指定 --pre--no-index 以及兩個 --find-links 位置

--pre
--no-index
--find-links /my/local/archives
--find-links http://some.archives.com/archives

個別需求選項

7.0 版新增。

可套用於個別需求的選項為

參照其他需求檔案

若需要,你可以參照其他需求檔案,如下所示

-r more_requirements.txt

你也可以參照 限制檔案,如下所示

-c some_constraints.txt

使用環境變數

10.0 版新增。

pip 支援在需求檔案中使用環境變數。

你必須使用 POSIX 格式的變數名稱,並在變數名稱的大寫字母周圍加上方括號,如這個範例所示: ${API_TOKEN}。pip 會嘗試在執行階段尋找主機系統上對應的環境變數定義。

注意

不支援其他變數擴充語法,例如 $VARIABLE%VARIABLE%

現在,您可以將敏感資料(權杖、金鑰等)儲存在環境變數中,並僅針對您的需求指定變數名稱,讓 pip 在執行期間查詢值。此方法符合常用的 12 因子設定模式

影響建構系統

危險

這會停用輪子(快取或其他)的使用。這表示建構可能會更慢、不太確定的、不太可靠,並且在安裝後可能無法正確運作。

此機制僅保留為向後相容,應視為已棄用。未來版本的 pip 可能會移除這些選項。

--global-option 選項用於傳遞選項給 setup.py

注意

這些選項與 pip 使用 setup.py(舊版) 建構系統介面來呼叫 setuptools 的方式高度相關。它與較新的 pyproject.toml 建構系統介面不相容。

這在其他建構後端或較新的僅限 setup.cfg 專用專案中無法運作。

如果您有如下宣告

FooProject >= 1.2 --global-option="--no-user-cfg"

以上內容大致轉換為執行的 FooProject 的 setup.py 指令碼,如下所示

python setup.py --no-user-cfg install

請注意,提供多個選項給 setup.py 的唯一方法是使用多個 --global-option 選項。