需求檔案格式¶
使用 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 版新增。
可套用於個別需求的選項為
--hash
(專用於 雜湊檢查模式)
參照其他需求檔案¶
若需要,你可以參照其他需求檔案,如下所示
-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
選項。
註解¶
以
#
開頭的行視為註解並忽略。緊接在空白之後的#
會導致#
和本行剩餘部分皆視為註解。處理完行連接之後,才會移除註解。