有什么方法可以显示pip包的依赖关系树吗?

发布于 2021-01-29 15:09:40

我有一个具有多个程序包依赖项的项目,其主要要求在中列出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软件包的依赖性?

关注者
0
被浏览
55
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您应该看一下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输出,该选项更易于机器解析,但以降低可读性为代价。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看