我有一个具有多个程序包依赖项的项目,其主要要求在中列出requirements.txt。当我打电话时,pip freeze它将当前安装的软件包打印为普通列表。我希望也获得他们的依赖关系,如下所示:
requirements.txt
pip freeze
Flask==0.9 Jinja2==2.7 Werkzeug==0.8.3 Jinja2==2.7 Werkzeug==0.8.3 Flask-Admin==1.0.6 Flask==0.9 Jinja2==2.7 Werkzeug==0.8.3
目的是检测每个特定程序包的依赖性:
Werkzeug==0.8.3 Flask==0.9 Flask-Admin==1.0.6
并将它们插入我的当前requirements.txt。例如,对于此输入:
Flask==0.9 Flask-Admin==1.0.6 Werkzeug==0.8.3
我想得到:
Flask==0.9 Jinja2==2.7 Flask-Admin==1.0.6 Werkzeug==0.8.3
有什么办法显示已安装的pip软件包的依赖性?
您应该看一下pipdeptree:
pipdeptree
$ pip install pipdeptree $ pipdeptree -fl Warning!!! Cyclic dependencies found: ------------------------------------------------------------------------ xlwt==0.7.5 ruamel.ext.rtf==0.1.1 xlrd==0.9.3 openpyxl==2.0.4 - jdcal==1.0 pymongo==2.7.1 reportlab==3.1.8 - Pillow==2.5.1 - pip - setuptools
它不会requirements.txt像您直接指示的那样生成文件。但是,源代码(255行python代码)应该相对容易地根据您的需要进行修改,或者您也可以(如pipdeptree 0.3 README中的@MERose所示)停用:
pipdeptree --freeze --warn silence | grep -P '^[\w0-9\-=.]+' > requirements.txt
的0.5版本pipdeptree还允许使用带有--json选项的JSON输出,该选项更易于机器解析,但以降低可读性为代价。
--json