对于给定的conda
包,如何列出依赖它的包?
我最近在一个已经有MPI版本(openmpi)的大学集群上安装了anaconda.安装了anaconda 的mpich2
软件包和mpi4py
软件包适用于mpi4py的演示,但mpi*
编译器(mpicc等)不兼容.所以我conda remove
倒是mpich2
和mpi4py
和用于pip
安装mpi4py
使用本地MPI安装和编译器.
我不得不四处寻找mpi4py
依赖,然后mpich2
依赖我,我只是确定了mpi4py
.是否有"简单"的方法来找出取决于mpich2
什么?
Yan*_*ann 27
conda info
会告诉你你所在的目录(或目录)package cache
.这些目录包含每个包的唯一目录,每个包目录包含一个info
目录和一个名为的文件index.json
.requires
每个文件中都有一个字段引用conda
依赖项列表.简而言之,您需要在这些文件中搜索您要删除的包.
例如,如果anaconda
安装在我的主目录中,因此包缓存是~/anaconda/pkgs
,为了找到mpich2
家属,我会:
grep mpich2 ~/anaconda/pkgs/*/info/index.json
Run Code Online (Sandbox Code Playgroud)
您将看到anaconda
包的2行,因为mpich2
它们都在上述requires
列表和名为的列表中depends
.您还会看到每个mpich2
可用包的一行,因为每个包还有一个name
字段.然后,您将看到每个包依赖的一行或多行,需要 mpich2
.我的搜索仅生成mpi4py
.
现在我认为你可以--dry-run
删除,但似乎remove
不会删除dependents,所以没有列出任何特殊内容.
如果grep
不可用,那么我相信你可以制作一个python脚本来做同样的事情,使用说glob
模块甚至json
可能进行搜索.
Rol*_*ber 14
使用最新版本的 conda,您可以执行以下操作
conda remove --dry-run <package>
Run Code Online (Sandbox Code Playgroud)
获取将与给定的软件包一起卸载的软件包列表。
sta*_*son 10
conda search --reverse-dependency <package>
Run Code Online (Sandbox Code Playgroud)
应该是答案。除非它不起作用。请对此问题进行投票,以表明它对用户很重要。据报道,1月18日,状态没有变化。希望能收集到足够的选票。也许有人可以提交PR进行修复。
在此之前,如果pip的反向依赖包版本与conda的版本相同,则通常可能不是pipdeptree的部分解决方案。但至少它会给您一些指示。
pipdeptree --reverse --packages <package>
Run Code Online (Sandbox Code Playgroud)
mamba repoquery
虽然Mamba主要是 Conda 的直接替代品,但它提供的额外功能之一是通过其repoquery
命令进行依赖项和反向依赖项查询的可靠功能. However, note that this is only for environment-level relationships, so the packages must be installed and the environment activated.
请注意,这距离最初的问题已经过去了好几年,所以我只是进行mpi4py
安装演示并使用安装的版本。
$ mamba create -n so-mpi4py mpi4py\n## installs 24 packages\n\n$ conda activate so-mpi4py\n(so-mpi4py) $ mamba repoquery whoneeds mpich\n __ __ __ __\n / \\ / \\ / \\ / \\\n / \\/ \\/ \\/ \\\n\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88/ /\xe2\x96\x88\xe2\x96\x88/ /\xe2\x96\x88\xe2\x96\x88/ /\xe2\x96\x88\xe2\x96\x88/ /\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\n / / \\ / \\ / \\ / \\ \\____\n / / \\_/ \\_/ \\_/ \\ o \\__,\n / _/ \\_____/ `\n |/\n \xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x95\x97 \xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x95\x97 \xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x95\x97 \xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x95\x97 \xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x95\x97\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x95\x97 \xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x95\x97\n \xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x95\x97 \xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x95\x91\xe2\x96\x88\xe2\x96\x88\xe2\x95\x94\xe2\x95\x90\xe2\x95\x90\xe2\x96\x88\xe2\x96\x88\xe2\x95\x97\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x95\x97 \xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x95\x91\xe2\x96\x88\xe2\x96\x88\xe2\x95\x94\xe2\x95\x90\xe2\x95\x90\xe2\x96\x88\xe2\x96\x88\xe2\x95\x97\xe2\x96\x88\xe2\x96\x88\xe2\x95\x94\xe2\x95\x90\xe2\x95\x90\xe2\x96\x88\xe2\x96\x88\xe2\x95\x97\n \xe2\x96\x88\xe2\x96\x88\xe2\x95\x94\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x95\x94\xe2\x96\x88\xe2\x96\x88\xe2\x95\x91\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x95\x91\xe2\x96\x88\xe2\x96\x88\xe2\x95\x94\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x95\x94\xe2\x96\x88\xe2\x96\x88\xe2\x95\x91\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x95\x94\xe2\x95\x9d\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x95\x91\n \xe2\x96\x88\xe2\x96\x88\xe2\x95\x91\xe2\x95\x9a\xe2\x96\x88\xe2\x96\x88\xe2\x95\x94\xe2\x95\x9d\xe2\x96\x88\xe2\x96\x88\xe2\x95\x91\xe2\x96\x88\xe2\x96\x88\xe2\x95\x94\xe2\x95\x90\xe2\x95\x90\xe2\x96\x88\xe2\x96\x88\xe2\x95\x91\xe2\x96\x88\xe2\x96\x88\xe2\x95\x91\xe2\x95\x9a\xe2\x96\x88\xe2\x96\x88\xe2\x95\x94\xe2\x95\x9d\xe2\x96\x88\xe2\x96\x88\xe2\x95\x91\xe2\x96\x88\xe2\x96\x88\xe2\x95\x94\xe2\x95\x90\xe2\x95\x90\xe2\x96\x88\xe2\x96\x88\xe2\x95\x97\xe2\x96\x88\xe2\x96\x88\xe2\x95\x94\xe2\x95\x90\xe2\x95\x90\xe2\x96\x88\xe2\x96\x88\xe2\x95\x91\n \xe2\x96\x88\xe2\x96\x88\xe2\x95\x91 \xe2\x95\x9a\xe2\x95\x90\xe2\x95\x9d \xe2\x96\x88\xe2\x96\x88\xe2\x95\x91\xe2\x96\x88\xe2\x96\x88\xe2\x95\x91 \xe2\x96\x88\xe2\x96\x88\xe2\x95\x91\xe2\x96\x88\xe2\x96\x88\xe2\x95\x91 \xe2\x95\x9a\xe2\x95\x90\xe2\x95\x9d \xe2\x96\x88\xe2\x96\x88\xe2\x95\x91\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x95\x94\xe2\x95\x9d\xe2\x96\x88\xe2\x96\x88\xe2\x95\x91 \xe2\x96\x88\xe2\x96\x88\xe2\x95\x91\n \xe2\x95\x9a\xe2\x95\x90\xe2\x95\x9d \xe2\x95\x9a\xe2\x95\x90\xe2\x95\x9d\xe2\x95\x9a\xe2\x95\x90\xe2\x95\x9d \xe2\x95\x9a\xe2\x95\x90\xe2\x95\x9d\xe2\x95\x9a\xe2\x95\x90\xe2\x95\x9d \xe2\x95\x9a\xe2\x95\x90\xe2\x95\x9d\xe2\x95\x9a\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x9d \xe2\x95\x9a\xe2\x95\x90\xe2\x95\x9d \xe2\x95\x9a\xe2\x95\x90\xe2\x95\x9d\n\n mamba (0.19.0) supported by @QuantStack\n\n GitHub: https://github.com/mamba-org/mamba\n Twitter: https://twitter.com/QuantStack\n\n\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\n\n\nExecuting the query mpich\n\n\n\n Name Version Build Depends Channel \n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n mpi4py 3.1.3 py310hd348148_0 mpich >=3.4,<4.0.0a0 conda-forge/osx-64\n
Run Code Online (Sandbox Code Playgroud)\n就我个人而言,我通常使用树格式,
\n(so-mpi4py) $ mamba repoquery whoneeds --tree mpich\n\nmpich[3.4.2]\n \xe2\x94\x94\xe2\x94\x80 mpi4py[3.1.3]\n
Run Code Online (Sandbox Code Playgroud)\n更多地证明了它的实用性,我注意到在某个时候我的一个 R 环境不知何故最终安装了 Python。我对此非常严格,所以我伸手去寻找mamba repoquery whoneeds
并发现:
(bioc_3_12) host:dir usr$ mamba repoquery whoneeds -t python\n\nExecuting the query python\n\npython[3.9.2]\n \xe2\x94\x9c\xe2\x94\x80 numpy[1.20.2]\n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80 colormath[3.0.0]\n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80 spectra[0.0.11]\n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80 r-rspectra[0.16_0] # <- this package is the culprit!\n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80 r-uwot[0.1.10]\n \xe2\x94\x9c\xe2\x94\x80 networkx[2.5]\n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80 colormath already visited\n \xe2\x94\x9c\xe2\x94\x80 certifi[2021.5.30]\n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80 setuptools[49.6.0]\n \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 networkx already visited\n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80 pip[21.0.1]\n \xe2\x94\x9c\xe2\x94\x80 python_abi[3.9]\n \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 numpy already visited\n \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 certifi already visited\n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80 setuptools already visited\n \xe2\x94\x9c\xe2\x94\x80 colormath already visited\n \xe2\x94\x9c\xe2\x94\x80 spectra already visited\n \xe2\x94\x9c\xe2\x94\x80 decorator[4.4.2]\n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80 networkx already visited\n \xe2\x94\x9c\xe2\x94\x80 wheel[0.36.2]\n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80 pip already visited\n \xe2\x94\x9c\xe2\x94\x80 pip already visited\n \xe2\x94\x94\xe2\x94\x80 setuptools already visited\n
Run Code Online (Sandbox Code Playgroud)\n事实证明,r-spectra
Conda Forge 中的包配方错误地将其依赖项之一表述为 Python 包 ( spectra
),而不是 C++ 动态库 ( spectralib
)。
搜索包缓存只会显示已经下载的包.对于您的情况,这种行为很好,但如果您想知道依赖于给定包的每个包,更好的方法是搜索您的频道的重新发送数据.重新加载缓存~/anaconda/pkgs/cache
,或者您可以使用浏览器导航到http://repo.continuum.io/pkgs/free/并单击repodata.json
您使用的平台(对于Binstar,转到,例如,https:// conda .binstar.org/asmeurer).然后在"depends"键中搜索包的名称.
有一个 conda 包:conda-tree。文档。
\n要查找依赖于某个包的包:
\n# which packages depend on a specific package\n$ conda-tree whoneeds xz\n[\'samtools\', \'bcftools\', \'htslib\', \'python\']\n
Run Code Online (Sandbox Code Playgroud)\n您还可以转储整个依赖关系树,然后搜索:
\n# full dependency tree\n$ conda-tree deptree --full\nneovim==0.3.1\n \xe2\x94\x9c\xe2\x94\x80 pynvim 0.3.2 [required: any]\n \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 greenlet 0.4.15 [required: any]\n...\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
11915 次 |
最近记录: |