有没有办法显示pip包的依赖树?

我有一个具有多个包依赖关系的项目,主要需求列在requirements.txt中。当我调用pip freeze时,它将当前安装的软件包打印为普通列表。我更愿意得到他们的依赖关系,比如:

烧瓶==0.9
金甲2==2.7
Werkzeug==0.8.3
金甲2==2.7
Werkzeug==0.8.3
烧瓶管理==1.0.6
烧瓶==0.9
金甲2==2.7
Werkzeug==0.8.3

目标是检测每个特定包的依赖关系:

Werkzeug==0.8.3
烧瓶==0.9
烧瓶管理==1.0.6

并将它们插入我当前的requirements.txt。例如,对于此输入:

烧瓶==0.9
烧瓶管理==1.0.6
Werkzeug==0.8.3

我想得到:

烧瓶==0.9
金甲2==2.7
烧瓶管理==1.0.6
Werkzeug==0.8.3

是否有任何方式显示已安装pip包的依赖关系

您应该看看pipdeptree

$pip安装pipdeptree
$Pippeptree-fl
警告找到循环依赖项:
------------------------------------------------------------------------
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
-枕头==2.5.1
-皮普
-设置工具

它不会像您直接指出的那样生成requirements.txt文件。但是,源代码(255行python代码)应该相对容易修改以满足您的需要,或者您也可以(正如pipdeptree 0.3自述文件中所示的@MERose)使用以下代码:

pipdeptree--freeze--warn silence | grep-P'^[\w0-9\-=.]+'>requirements.txt

pipdeptree的0.5版本还允许使用--JSON选项进行JSON输出,该选项更易于机器解析,但代价是可读性较差

发表评论