如何优化我的requirements.txt以仅包括应用程序直接使用的软件包?

例如,我使用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;),但是对于任何实际应用程序来说,这很快变得不切实际。

Jason82918 回答:如何优化我的requirements.txt以仅包括应用程序直接使用的软件包?

{p3}建议的

pipreqs一旦支持Python 3.7及更高版本,将是一个很好的解决方案。

在大多数情况下,直到pipdeptree都能很好地发挥作用:

pipdeptree -l | grep -i '^[[:alnum:]]' > requirements.txt
本文链接:https://www.f2er.com/2694714.html

大家都在问