如何为多个环境定制requirements.txt?
我有两个分支,开发和生产。 每个人都有依赖关系,其中一些是不同的。 开发指向自身正在开发的依赖关系。 同样适用于生产。 我需要部署到Heroku,希望每个分支的依赖关系在一个名为'requirements.txt'的文件中。
什么是最好的组织方式?
我想到的是:
- 保持单独的需求文件,每个分支一个(必须经常融合!
- 告诉Heroku我要使用哪个需求文件(环境variables?)
- 编写部署脚本(创build临时分支,修改需求文件,提交,部署,删除临时分支)
您可以级联您的需求文件,并使用“-r”标志告诉pip将一个文件的内容包含在另一个文件中。 你可以将你的需求分解成一个模块化文件夹层次结构,如下所示
`-- django_project_root |-- requirements | |-- common.txt | |-- dev.txt | `-- prod.txt `-- requirements.txt
这些文件的内容如下所示:
common.txt:
# Contains requirements common to all environments req1==1.0 req2==1.0 req3==1.0 ...
dev.txt:
# Specifies only dev-specific requirements # But imports the common ones too -r common.txt dev_req==1.0 ...
prod.txt:
# Same for prod... -r common.txt prod_req==1.0 ...
在Heroku之外,你现在可以设置这样的环境:
pip install -r requirements/dev.txt
要么
pip install -r requirements/prod.txt
由于Heroku专门在项目根目录中查找“requirements.txt”,因此它应该只是反映prod,如下所示:
requirements.txt:
# Mirrors prod -r requirements/prod.txt