查找Python/Django项目的所有未满足的依赖关系

问题描述:

我已经交了十几个传统的Django应用程序来维护。这个过程的第一部分是将它们从古老的Ubuntu 9.04服务器(即支持它的长的)转移到新鲜和安全的东西上。查找Python/Django项目的所有未满足的依赖关系

但是这些项目不包括任何类型的依赖列表。从习惯上讲,我习惯于在开发网站时生成一个requirements.txt文件,并使重新部署成为一个简单且自动化的过程。

就目前而言,我将不得不手动逐步执行这些项目,确保每个角落都找到可能缺失的依赖关系。无论是或我安装的一切

这里是否有自动化的代码分析选项?有些东西可以用来扫描每个项目的本地项目目录以生成它需要的软件包列表......理想情况下是使用PyPI格式化的软件包名称。

+0

您可以编写脚本来搜索'import x'和'from x import y'语句,然后在目标环境中运行所有这些语句以查看哪些工作以及哪些不... – 2014-09-30 10:53:24

z3c.dependencychecker可用于此目的。

它位于z3c命名空间中,但从我所知道的只是因为它是在开发Zope生态系统的同时,也可以用于纯Python项目。除非你想运行它的测试,否则它对Zope包没有任何依赖。

但它只考虑在setup.py中声明的依赖关系,而不在requirements.txt中。但是一旦确定完整的依赖关系列表,就应该很容易地同步缺失的依赖关系。

用法:

  • 激活你的virtualenv,并安装z3c.dependencychecker,例如通过做pip install z3c.dependencychecker
  • 确保您最近为您的项目运行了python setup.py develop,因此您有最新的*.egg-info
  • cd到自己的项目源代码目录
  • 运行dependencychecker

注意z3c.dependencychecker是不完美的(漂亮的定义很多,因为它的工作方式),因此它可以报告一些误报。但根据我的经验,这是一个非常好的开始,应该很容易验证为什么它报告了特定的依赖关系,并且排除了误报。