使用要求文件指定依赖项 - AWS Elastic Beanstalk
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用要求文件指定依赖项

典型的 Python 应用程序要依靠其他第三方的 Python 程序包。使用 Elastic Beanstalk Python 平台,您可以通过几种方法来指定应用程序所依赖的 Python 包。

使用 piprequirements.txt

用于安装 Python 包的标准工具为 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 维护两个文件:Pipfile 中包含各种类型的依赖项和要求,而 Pipfile.lock 是一个启用确定性构建的版本快照。有关更多信息,请参阅 Pipenv:适合人工使用的 Python 开发工作流

Amazon Linux 2 Python 平台版本支持基于 Pipenv 的要求文件。在您的开发环境中创建这些文件,并将它们包含在部署到 Elastic Beanstalk 的源包中。

注意

Amazon Linux AMI Python 平台版本(在 Amazon Linux 2 之前)不支持 Pipenv 和 Pipfile

下面的示例使用 Pipenv 来安装 Django 和 Django REST 框架。

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

这些命令会创建 PipfilePipfile.lock 文件。将 Pipfile 放在源包的顶级目录中,以便获取安装在您的环境实例上的最新版本的依赖项包。此外,包括 Pipfile.lock,以便获取反映在创建文件时您的开发环境的一组恒定的软件包版本。

如果您包含此处描述的多个要求文件,则 Elastic Beanstalk 只使用其中一个文件。下面的列表按降序顺序显示优先级。

  1. requirements.txt

  2. Pipfile.lock

  3. Pipfile