使用要求檔案指定相依性 - AWS Elastic Beanstalk

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

使用要求檔案指定相依性

Python 應用程式通常與其他第三方 Python 套件具有相依性。使用 Elastic Beanstalk Python 平台時,您有數種方法可以指定您的應用程式相依的 Python 套件。

使用 piprequirements.txt

安裝 Python 套件的標準工具是 pip。它有一項功能可讓您於單一要求檔案內,指定所需的所有套件 (及其版本)。如需有關要求檔案的詳細資訊,請參閱 pip 文件網站上的要求檔案格式

建立名為 requirements.txt 的檔案並將其置於原始碼套件的最上層目錄。以下是 Django 的範例 requirements.txt 檔案。

Django==2.2 mysqlclient==2.0.3

在您的開發環境中,您可以使用 pip freeze 命令來產生您的要求檔案。

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

為了確保您的要求檔案僅包含您應用程式實際使用的套件,請使用虛擬環境來安裝這些套件。在虛擬環境外,pip freeze 輸出將包含安裝於開發機器的所有 pip 套件,包括您的作業系統隨附的套件。

注意

在 Amazon Linux AMI Python 平台版本上,Elastic Beanstalk 本身不支援 Pipenv 或 Pipenv。如果您使用 Pipenv 管理應用程式相依性,請執行下列命令來產生 requirements.txt 檔案。

~/my-app$ pipenv lock -r > requirements.txt

若要進一步了解,請參閱 Pipenv 文件中的產生 requirements.txt

使用 Pipenv 和 Pipfile

Pipenv 是一個現代化的 Python 套件工具。它將套件安裝與建立和管理相依性檔案以及應用程式的 virtualenv 結合在一起。如需詳細資訊,請參閱 Pipenv:適用於人類的 Python 開發工作流程

Pipenv 會維護兩個檔案:

  • Pipfile — 此檔案包含各種類型的相依性和要求。

  • Pipfile.lock — 此檔案包含可啟用決定性組建的版本快照。

您可在開發環境中建立此類檔案,並將它們包含在您部署到 Elastic Beanstalk 之原始碼套件的最上層目錄中。如需有關這兩個檔案的詳細資訊,請參閱範例 Pipfile 和 Pipfile.lock

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

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

優先順序

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

  1. requirements.txt

  2. Pipfile.lock

  3. 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

  • 如果找不到這三個要求檔案,我們不會安裝任何應用程式相依性。