使用要求文件指定依赖项
典型的 Python 应用程序要依靠其他第三方的 Python 程序包。使用 Elastic Beanstalk Python 平台,您可以通过几种方法来指定应用程序所依赖的 Python 包。
使用 pip
和 requirements.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
这些命令会创建 Pipfile
和 Pipfile.lock
文件。将 Pipfile
放在源包的顶级目录中,以便获取安装在您的环境实例上的最新版本的依赖项包。此外,包括 Pipfile.lock
,以便获取反映在创建文件时您的开发环境的一组恒定的软件包版本。
如果您包含此处描述的多个要求文件,则 Elastic Beanstalk 只使用其中一个文件。下面的列表按降序顺序显示优先级。
-
requirements.txt
-
Pipfile.lock
-
Pipfile