当前位置: 首页 > 面试题库 >

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

王声
2023-03-14
问题内容

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

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



 类似资料:
  • 问题内容: 我想分析Python包的依赖树。我如何获得这些数据? 我已经知道的事情 有时包含一个列出软件包依赖关系的字段 PyPi是Python软件包的在线存储库 PyPi有一个API 我不知道的事情 PyPi上很少有项目(大约10%)在该字段中明确列出依赖项,但仍设法下载正确的软件包。我想念什么?例如,对于统计计算的通俗图书馆,,不会列出,但仍设法安装,等....有没有一种更好的方式自动收集依赖

  • 问题内容: 我有一个二进制文件,其中ldd显示了意外的依赖项和libicuuc(来自“ icu”)。 由于在该系统上libxml动态依赖于libicuuc,因此ldd最终会找到它是有意义的,但是是否期望libicuuc也出现在A的ldd输出中?是否有一些命令仅检索链接为依赖项依赖关系的库? 问题答案: 显示启动应用程序或加载共享库时需要加载的所有库。 仅显示二进制文件的直接依赖项。 是否有一些命令

  • 我们都知道依赖树对于解决可传递依赖冲突至关重要。对于,情况也是如此,但我找不到一种方法,可以像那样打印依赖关系树。 有没有插件或其他东西可以帮助你? Maven版本:3.2.3 编辑 对于认为这个问题与另一个问题重复的人,请考虑: > 另一个问题是关于依赖关系管理的插件管理。 另一个问题与生成依赖关系树无关。

  • 我有一个多模块Maven项目,其中父pom如下 Spring模块pom是(没有提到任何版本): SpringBootLocalstack模块pom是: 对于Spring模块,当我从IntelliJ重新加载所有maven项目时,它成功地解决了所有依赖项,但对于SpringBootLocalstack,如果我从pom文件中删除“version”标签,它就无法解决,例如: 我得到了: 无法解析com.a

  • 当我有一个包含POM的项目时,例如: 但是我似乎弄错了,Internet上的Maven文档并没有帮助我解决这个问题。 有什么想法吗?

  • 我正在运行gradle(1.12)的最新版本。在项目的根目录中,我运行以下命令,正如@commonsware的回答所描述的那样,它应该给出依赖关系树: 当我运行它时,会发生以下情况: