【问题标题】:How to analyze dependency tree for conda如何分析conda的依赖树
【发布时间】:2019-09-18 14:37:39
【问题描述】:

是否有像我们在 Maven 中那样分析 Conda 依赖项的工具?

ie:在 Java 项目(基于 maven)中,您说 mvn dependency:tree,它以可读的树格式显示所有依赖项(以及传递依赖项)。

我想知道我们是否在基于 python 的项目中有一些东西可以分析 Conda 依赖项。

有什么建议吗?

【问题讨论】:

  • 如果您只是在寻找软件包,您可以使用pip freeze 列出当前安装的软件包及其各自的版本。是否符合您的要求?
  • 我想查看我的应用程序中的所有依赖项以及它们的传递依赖项。核心思想是修剪不必要的依赖。
  • conda install/remove --prune package_name 命令遍历树并修剪不必要的包。但我不知道有一种方法可以将其可视化。

标签: python python-3.x anaconda conda miniconda


【解决方案1】:

查看conda-tree

用法(基于conda-tree网页):

# version
$ conda-tree --version
conda-tree 0.0.4

# packages that no other package depends on
$ conda-tree leaves
['samtools','bcftools',...]

# dependencies of a specific package
$ conda-tree depends samtools
['curl', 'xz', 'libgcc', 'zlib']

# which packages depend on a specific package
$ conda-tree whoneeds xz
['samtools', 'bcftools', 'htslib', 'python']

# dependency cycles
$ conda-tree cycles
pip -> python -> pip
pip -> wheel -> python -> pip

# query a different conda prefix/env
$ conda-tree -p /conda/envs/trinity leaves
['trinity']

# query by name
$ conda-tree -n trinity leaves
['trinity']

对于使用pip 安装的依赖项,请查看pipdeptree。它将返回包的依赖关系树(使用pip 安装。参见documentation

尝试:

pipdeptree

或者,如果您只是在寻找 叶子

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

另请参阅this 答案。

【讨论】:

  • 当我运行./conda-tree.py leaves 时,我得到bash: ./conda-tree.py: No such file or directory,所以该命令显然不是这样。 conda-tree.py 在哪里?
  • 好的。我只是更改了命令。 README 似乎已经过时了。谢谢@HelloGoodbye
  • 似乎conda-tree 没有列出任何使用pip 安装的包;至少在我的系统上。
  • @HelloGoodbye pipdeptree 适用于使用 pip 安装的软件包
  • 没错。 Pipdeptree 不适用于 Conda
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-06
  • 1970-01-01
  • 2021-08-04
相关资源
最近更新 更多