如何比较需求文件和实际安装的Python模块?

时间:2016-08-19 19:42:40

标签: python python-2.7 pip requirements.txt

鉴于requirements.txt和virtualenv环境,检查来自脚本的最佳方法是,是否满足要求并可能在不匹配的情况下提供详细信息?

Pip使用主要版本更改了它的内部API,因此我看到建议不要使用它的parse_requirements方法。

pkg_resources.require(dependencies)的方式,但是如何解析需求文件及其所有的好处,比如github链接等?

这应该是非常简单的事情,但无法找到任何指针。

更新:需要程序化解决方案。

1 个答案:

答案 0 :(得分:4)

您可以将virtualenv当前安装的软件包pip freeze保存到文件中,例如current.txt

pip freeze > current.txt

然后你可以使用像this这样的脚本将它与requirements.txt与difflib进行比较:

import difflib

req = open('requirements.txt')
current = open('current.txt')

diff = difflib.ndiff(req.readlines(), current.readlines())
delta = ''.join([x for x in diff if x.startswith('-')])

print(delta)

这应该只显示'requirements.txt'中不在'current.txt'中的包。