我有一个小的Python端项目,它正在经历一些成长的痛苦,想知道大型Python项目的人员是如何处理这个问题的。
该项目是部署到AWS的Python/Flask/Docker。列出的依赖项(我们直接在项目中导入(是从带有明确版本号的requirements.txt文件中安装的。我们在注意到我们的新部署(重建Docker/dependencies等(有时会安装更新版本的包,导致项目中断后添加了版本号。
我们现在面临的问题是,一个新入职的开发人员正在设置她的环境,并面临同样的问题——这次是原始依赖项的子依赖项。(例如,Flask可能会安装Werkskrug、Jinja2等,如果其中一些版本错误,应用程序就会崩溃。(显而易见的解决方案是查看每个子依赖项,并在requirements.txt中列出每个包的明确版本。但这有点痛苦,所以我四处询问,看看人们在Real Projects上做了什么。
你们不可能全部手动完成,对吧?在JS中,我们有NPM和package.lock文件等等,它们是自动构建的。Python中有类似的东西吗?我是不是错过了一些我们应该在这里使用的基本功能?
提前感谢
我写了一个工具,名为realreq。。您可以从pippip install realreq
安装它。它将通过读取源文件并递归地指定它们的需求来生成您的需求。
realreq --deep -s /path/to/source
将完全指定您的依赖项及其子依赖项。请注意,如果您使用的是虚拟环境,则需要将其激活,以便realreq能够找到依赖项,并且必须安装它们。(即realreq需要在安装了依赖项的环境中运行(。有安装环境的工程师可以运行它,然后将输出作为requirements.txt文件传递给新工程师。