如何为多个环境自定义requirements.txt?

我有两个分公司,开发和生产。每个都有依赖项,其中一些是不同的。开发点指向开发中的依赖项。生产也是如此。我需要部署到Heroku,Heroku希望每个分支的依赖项都位于一个名为“requirements.txt”的文件中

组织的最佳方式是什么

我想到的是:

  • 维护单独的需求文件,每个分支中有一个(必须能够经受住频繁的合并!)
  • 告诉Heroku我要使用哪个需求文件(环境变量?)
  • 编写部署脚本(创建临时分支、修改需求文件、提交、部署、删除临时分支)

您可以级联需求文件,并使用“-r”标志通知pip将一个文件的内容包含在另一个文件中。您可以将您的需求分解为模块化文件夹层次结构,如下所示:

`--django\u项目根目录
|--要求
||--common.txt
||--dev.txt
|`--prod.txt
`--requirements.txt

文件的内容如下所示:

common.txt:

#包含所有环境的通用需求
需求1==1.0
需求2==1.0
需求3==1.0
...

dev.txt:

#仅指定特定于开发人员的需求
#但也进口普通的
-r common.txt
dev_req==1.0
...

prod.txt:

#产品也一样。。。
-r common.txt
产品需求==1.0
...

在Heroku之外,您现在可以设置如下环境:

pip安装-r需求/dev.txt

pip安装-r要求/prod.txt

由于Heroku在项目根目录中专门查找“requirements.txt”,因此它应该只是镜像prod,如下所示:

requirements.txt:

#镜像产品
-r要求/prod.txt

发表评论