本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 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
。 -
如果找不到三个需求文件中的任何一个,则将不会安装任何应用程序依赖项。