鉴于requirements.txt
和virtualenv环境,检查来自脚本的最佳方法是,是否满足要求并可能在不匹配的情况下提供详细信息?
Pip使用主要版本更改了它的内部API,因此我看到建议不要使用它的parse_requirements
方法。
有pkg_resources.require(dependencies)
的方式,但是如何解析需求文件及其所有的好处,比如github链接等?
这应该是非常简单的事情,但无法找到任何指针。
更新:需要程序化解决方案。
答案 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'中的包。