requirements.txt で必須の Python パッケージを管理する

Python プロジェクトを他のユーザーと共有する場合、またはビルド システムを使用して Python アプリケーションを生成する場合は、必要な外部パッケージを指定する必要があります。 環境を復元する必要がある他の場所にプロジェクトをコピーする場合は、必要な依存パッケージも定義する必要があります。

外部の依存 Python パッケージを指定するには、要件ファイル (readthedocs.org) を使用することをお勧めします。 このファイルには、プロジェクトに必要なバージョンの依存パッケージをインストールする pip コマンドの一覧が含まれています。 最も一般的なコマンドは pip freeze > requirements.txt です。 このコマンドは、環境の現在のパッケージ リストを requirements.txt ファイルに記録します。

要件ファイルには、インストールされているすべてのパッケージの正確なバージョンが含まれています。 要件ファイルを使用して、環境の要件を固定できます。 正確なパッケージ バージョンを使用することで、自分の環境を別のコンピューターで簡単に再現できます。 パッケージのインストールが、バージョンの範囲を使用して、別のパッケージの依存関係として、または pip 以外のインストーラーを使用して行われた場合でも、それらは要件ファイルに含まれます。

前提条件

技術的には、任意のファイル名を使用して要件を追跡できます。 ただし、Visual Studio では、"requirements.txt" という名前の要件ファイルに対して特定のサポートが提供されます。パッケージをインストールするときに引数 -r <full path to file> を使用して、ファイルの優先名を指定できます。

requirements.txt に一覧表示されている依存関係をインストールする

requirements.txt ファイルを含むプロジェクトを読み込む場合は、ファイルに一覧表示されているすべてのパッケージ依存関係をインストールできます。

  1. ソリューション エクスプローラーでプロジェクトを展開し、[Python 環境] ノードを展開します。

  2. パッケージをインストールする環境ノードを見つけます。 ノードを右クリックし、[requirements.txt からインストール] を選択します。

    Visual Studio 2019 の要件テキスト ファイルから Python パッケージをインストールする方法を示すスクリーンショット。

    Visual Studio 2022 の要件テキスト ファイルから Python パッケージをインストールする方法を示すスクリーンショット。

  3. [出力] ウィンドウでパッケージ インストール プロセスを監視できます。

    要件テキスト ファイルからの Python パッケージのインストールからの出力を示すスクリーンショット。

    出力には、インストールされている必要なパッケージと共に、影響を受ける pip コマンドに必要な更新プログラムと新しい pip バージョンの可用性が一覧表示されます。

仮想環境に依存関係をインストールする

既存の仮想環境に Python パッケージの依存関係をインストールすることもできます。

  1. ソリューション エクスプローラーでプロジェクトを展開し、次に [Python 環境] ノードを展開します。

  2. パッケージをインストールする仮想環境ノードを見つけます。 ノードを右クリックし、[requirements.txt からインストール] を選択します。

仮想環境を作成する必要がある場合は、「仮想環境を使用する」を参照してください。

requirements.txt ファイルを生成する

プロジェクトに必要なすべての Python パッケージが既に環境にインストールされている場合は、Visual Studio で requirements.txt ファイルを生成できます。

  1. ソリューション エクスプローラーでプロジェクトを展開し、次に [Python 環境] ノードを展開します。

  2. 要件ファイルを生成する環境ノードを見つけます。 ノードを右クリックし、[requirements.txt の生成] を選択します。

    Visual Studio 2019 で Python パッケージの依存関係の要件テキスト ファイルを生成する方法を示すスクリーンショット。

    Visual Studio 2022 で Python パッケージの依存関係の要件テキスト ファイルを生成する方法を示すスクリーンショット。

既存の requirements.txt ファイルにエントリを更新または追加する

requirements.txt ファイルが既に存在する場合は、いくつかのオプションを含むプロンプトが Visual Studio に表示されます。

要件テキスト ファイルが既に存在する時に表示される、エントリを更新または追加したり、ファイルを置き換えたりするためのオプションを含むプロンプトのスクリーンショット。

  • [ファイル全体を置き換える]: requirements.text ファイルで定義されているすべての項目、コメント、およびオプションを上書きします。
  • [既存のエントリを更新]: 現在インストールされているバージョンと一致するように、requirements.text ファイルのバージョン指定子を更新します。
  • [エントリを更新および追加する]: requirements.text ファイルの既存の要件を更新し、すべての新しいパッケージ要件をファイルの末尾に追加します。

Visual Studio は pip を実行して環境の現在のパッケージ要件を検出し、次に選択内容に基づいて requirements.txt ファイルを更新します。

パッケージの依存関係を手動でインストールする

pip を使用して requirements.txt ファイルに定義されているパッケージの依存関係をインストールしないと、インストール全体が失敗します。

この問題に対処するには、次の 2 つのオプションがあります。

  • requirements.txt ファイルを手動で編集して失敗したパッケージを除外し、インストール プロセスを再度実行します。

  • pip コマンドのオプション を使用して、パッケージのインストール可能なバージョンを参照します。

pip ホイールを使用して要件ファイルを更新する

pip wheel コマンドを使用して依存関係をコンパイルする場合、--find-links <path> オプションを requirements.txt ファイルに追加できます。

  1. pip wheel コマンド呼び出して、必要な依存関係のリストをコンパイルします。

    pip wheel azure
    

    出力には、収集されたパッケージ用に構築されたホイールが表示されます。

    Downloading/unpacking azure
        Running setup.py (path:C:\Project\env\build\azure\setup.py) egg_info for package azure
    
    Building wheels for collected packages: azure
        Running setup.py bdist_wheel for azure
        Destination directory: c:\project\wheelhouse
    Successfully built azure
    Cleaning up...
    
  2. find-links および no-index オプションを、パッケージ バージョン要件と共に requirements.txt ファイルに追加します。

    type requirements.txt
    --find-links wheelhouse
    --no-index
    azure==0.8.0
    
  3. 更新された要件ファイルを使用して pip インストール プロセスを実行します。

    pip install -r requirements.txt -v
    

    出力は、インストール プロセスの進行状況を追跡します。

    Downloading/unpacking azure==0.8.0 (from -r requirements.txt (line 3))
        Local files found: C:/Project/wheelhouse/azure-0.8.0-py3-none-any.whl
    Installing collected packages: azure
    Successfully installed azure
    Cleaning up...
        Removing temporary dir C:\Project\env\build...