例如,我使用pip install django
将django添加到我的venv中。生成我的requirements.txt文件的通常方法是使用pip freeze > requirements.txt
,它会产生:
asgiref==3.2.3
Django==3.0.2
pytz==2019.3
sqlparse==0.3.0
这是一个谎言。我唯一的要求是django,而我想要的(完全有效的)requirements.txt是:
Django>=3.0.2,<4
有时候这很重要。对于一个实际的应用程序,我将得到许多具有重叠依赖关系的软件包。升级时,这可能会或可能不会导致问题,但是如果我固定了我不关心的所有依赖包,几乎总是会出现问题(在上面的示例中,它们取决于django开发人员,而不是我)。
为了优化依赖关系肿的requirements.txt文件,我可以手动检查源代码(导致上面的空Requirements.txt;),但是对于任何实际应用程序来说,这很快变得不切实际。