

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 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`。它有一項功能可讓您於單一要求檔案內，指定所需的所有套件 (及其版本)。如需有關要求檔案的詳細資訊，請參閱 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 或 Pipenv。如果您使用 Pipenv 管理應用程式相依性，請執行下列命令來產生 `requirements.txt` 檔案。  

```
~/my-app$ pipenv lock -r > requirements.txt
```
若要進一步了解，請參閱 Pipenv 文件中的[產生 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 會維護兩個檔案：
+ `Pipfile` — 此檔案包含各種類型的相依性和要求。
+ `Pipfile.lock` — 此檔案包含可啟用決定性組建的版本快照。

您可在開發環境中建立此類檔案，並將它們包含在您部署到 Elastic Beanstalk 之原始碼套件的最上層目錄中。如需有關這兩個檔案的詳細資訊，請參閱[範例 Pipfile 和 Pipfile.lock](https://pipenv.pypa.io/en/latest/basics/#)。



下列範例使用 Pipenv 安裝 Django 和 Django REST 框架。這些命令會建立檔案 `Pipfile` 和 `Pipfile.lock`。

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

 

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

如果您包含本主題中描述的多個要求檔案，Elastic Beanstalk 只會使用其中一個。下列清單以遞減順序顯示優先順序。

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`。
+ 如果找不到這三個要求檔案，我們不會安裝任何應用程式相依性。