本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Elastic Beanstalk 上的需求檔案指定相依性
本主題說明如何設定應用程式以安裝其他需要的 Python 套件。Python 應用程式通常與其他第三方 Python 套件具有相依性。使用 Elastic Beanstalk Python 平台,您有多種方式可指定應用程式依賴的 Python 套件。
使用 pip
和 requirements.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 或 Pipfiles。如果您使用 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架構。這些命令會建立檔案 Pipfile
和 Pipfile.lock
。
~/my-app$ pipenv install django
~/my-app$ pipenv install djangorestframework
優先順序
如果您包含本主題中描述的多個要求檔案,Elastic Beanstalk 只會使用其中一個。下列清單以遞減順序顯示優先順序。
-
requirements.txt
-
Pipfile.lock
-
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
。 -
如果找不到這三個要求檔案,我們不會安裝任何應用程式相依性。