

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Elastic Beanstalk での要件ファイルを使用した依存関係の指定
<a name="python-configuration-requirements"></a>

このトピックでは、アプリケーションを設定して、必要な他の Python パッケージをインストールする方法について説明します。通常の Python アプリケーションには、他のサードパーティー製 Python パッケージに対する依存関係があります。Elastic Beanstalk Python プラットフォームでは、アプリケーションが依存する Python パッケージを指定する方法が複数あります。

## `pip` および `requirements.txt` を使用します。
<a name="python-configuration-requirements.txt"></a>

Python パッケージをインストールするためのスタンダードツールは `pip` です。これには、すべての必要なパッケージ (およびバージョン) を 1 つの要件ファイルで指定する特徴があります。要件ファイルの詳細については、pip ドキュメントウェブサイトの「[要件ファイル形式](https://pip.pypa.io/en/latest/reference/requirements-file-format/#requirements-file-format)」を参照してください。

`requirements.txt` という名前のファイルを作成し、出典バンドルの最上位ディレクトリに置きます。次は、Django の `requirements.txt` ファイルの例です。

```
Django==2.2
mysqlclient==2.0.3
```

開発環境で、`pip freeze` コマンドを使用して要件ファイルを生成できます。

```
~/my-app$ pip freeze > requirements.txt
```

要件ファイルに、実際にアプリケーションによって使用されるパッケージのみが含まれるようにするには、それらのパッケージのみがインストールされている[仮想環境](python-development-environment.md#python-common-setup-venv)を使用します。仮想環境の外では、`pip freeze` の出力に、オペレーティングシステムに付属のパッケージを含め、開発マシンにインストール済みのすべての `pip` パッケージが含まれます。

**注記**  
Amazon Linux AMI Python プラットフォームバージョンでは、Elastic Beanstalk は Pipenv または Pipfiles をネイティブにサポートしていません。Pipenv を使用してアプリケーションの依存関係を管理する場合は、次のコマンドを実行して `requirements.txt` ファイルを生成します。  

```
~/my-app$ pipenv lock -r > requirements.txt
```
詳細については、Pipenv ドキュメントの [Generating a requirements.txt](https://pipenv.readthedocs.io/en/latest/advanced/#generating-a-requirements-txt) を参照してください。

## Pipenv と `Pipfile` を使用します
<a name="python-configuration-requirements.pipenv"></a>

Pipenv は、最新の Python パッケージングツールです。これは、パッケージのインストールと依存関係ファイルの作成と管理およびアプリケーションの virtualenv を組み合わせたものです。詳細については、「[Pipenv: 人間のための Python 開発ワークフロー](https://pipenv.readthedocs.io/en/latest/)」を参照してください。

Pipenv は 2 つのファイルを維持します。
+ `Pipfile` – このファイルには、さまざまな種類の依存関係と要件が含まれています。
+ `Pipfile.lock` – このファイルには、確定的なビルドを可能にするバージョンスナップショットが含まれています。

これらのファイルを開発環境で作成し、Elastic Beanstalk にデプロイするソースバンドルの最上位ディレクトリに含めることができます。これらの 2 つのファイルの詳細については、「[Pipfile と Pipfile.lock の例](https://pipenv.pypa.io/en/latest/basics/#)」を参照してください。



次の例では、Django と Django REST フレームワークをインストールするために Pipenv を使用しています。これらのコマンドは、ファイル `Pipfile` と `Pipfile.lock` を作成します。

```
~/my-app$ pipenv install django
~/my-app$ pipenv install djangorestframework
```

 

## 優先順位
<a name="python-configuration-requirements.precedence"></a>

このトピックで説明する要件ファイルを複数含めると、Elastic Beanstalk はそのうちの 1 つだけを使用します。次の表に、優先順位を降順で示します。

1. `requirements.txt`

1. `Pipfile.lock`

1. `Pipfile`

**注記**  
2023 年 3 月 7 日の Amazon Linux 2 プラットフォームリリース以降、これらのファイルを複数指定すると、Elastic Beanstalk はデプロイ中にどの依存関係ファイルが使用されたかを示すコンソールメッセージを発行します。

次のステップは、インスタンスのデプロイ時に Elastic Beanstalk が依存関係をインストールするために従うロジックです。
+ `requirements.txt` ファイルがある場合は、コマンド `pip install -r requirements.txt` を使用します。
+ 2023 年 3 月 7 日の Amazon Linux 2 プラットフォームリリース以降、`requirements.txt` ファイルはなくても `Pipfile.lock` がある場合は、コマンド `pipenv sync` を使用します。そのリリース前は、`pipenv install --ignore-pipfile` を使用していました。
+ `requirements.txt` ファイルと `Pipfile.lock` のいずれも存在しないが、`Pipfile` が存在する場合は、コマンド `pipenv install --skip-lock` を使用します。
+ 3 つの要件ファイルが見つからない場合は、アプリケーションの依存関係はインストールされません。