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

使用要求文件指定依赖项

典型的 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