要件ファイル形式

要件ファイルは、pip install を使用する際に、pip によってインストールされる項目のリストとして機能します。この形式を使用するファイルは、通常、requirements.txt という名前が付けられているため、「pip 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への引数を示します。次の形式がサポートされています

  • [[--option]...]

  • <要件 指定子>

  • <アーカイブ URL/パス>

  • [-e] <ローカル プロジェクト パス>

  • [-e] <VCS プロジェクト URL>

要件指定子の詳細については、要件指定子 を参照してください。これらの形式のすべての例については、を参照してください。

エンコーディング

要件ファイルはデフォルトで utf-8 エンコーディングであり、エンコーディングを変更するための PEP 263 スタイルのコメントもサポートしています(例:# -*- coding: <エンコーディング 名> -*-)。

行継続

エスケープされていない \ で終わる行は行継続として扱われ、それに続く改行は事実上無視されます。

コメント

# で始まる行はコメントとして扱われ、無視されます。空白の後に # が続く場合、# と行の残りの部分はコメントとして扱われます。

コメントは、行継続が処理されたに削除されます。

サポートされるオプション

要件ファイルは、以下にリストされている特定の pip install オプションのみをサポートします。

グローバルオプション

次のオプションは、pip install全体の実行に影響を与え、個々の行で指定する必要があります。

--pre--no-index、および2つの --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要素構成パターン に沿っています。

ビルドシステムに影響を与える

危険

これにより、wheels(キャッシュされているものも含めて)の使用が無効になります。これは、ビルドが遅くなり、決定性が低くなり、信頼性が低下し、インストール時に正しく動作しない可能性があることを意味します。

このメカニズムは、下位互換性のためにのみ保持されており、非推奨と見なすべきです。将来の 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 オプションを使用することであることに注意してください。