mamba repoquery
虽然Mamba主要是 Conda 的替代品,但它提供的额外功能之一是通过其repoquery
command进行依赖和反向依赖查询的可靠功能。但是请注意,这仅适用于环境级别的关系,因此必须安装包并激活环境。
演示
请注意,这与最初的问题相去甚远,所以我只是进行mpi4py
安装演示并使用已安装的版本。
$ mamba create -n so-mpi4py mpi4py
## installs 24 packages
$ conda activate so-mpi4py
(so-mpi4py) $ mamba repoquery whoneeds mpich
__ __ __ __
/ \ / \ / \ / \
/ \/ \/ \/ \
███████████████/ /██/ /██/ /██/ /████████████████████████
/ / \ / \ / \ / \ \____
/ / \_/ \_/ \_/ \ o \__,
/ _/ \_____/ `
|/
███╗ ███╗ █████╗ ███╗ ███╗██████╗ █████╗
████╗ ████║██╔══██╗████╗ ████║██╔══██╗██╔══██╗
██╔████╔██║███████║██╔████╔██║██████╔╝███████║
██║╚██╔╝██║██╔══██║██║╚██╔╝██║██╔══██╗██╔══██║
██║ ╚═╝ ██║██║ ██║██║ ╚═╝ ██║██████╔╝██║ ██║
╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝
mamba (0.19.0) supported by @QuantStack
GitHub: https://github.com/mamba-org/mamba
Twitter: https://twitter.com/QuantStack
█████████████████████████████████████████████████████████████
Executing the query mpich
Name Version Build Depends Channel
────────────────────────────────────────────────────────────────────────
mpi4py 3.1.3 py310hd348148_0 mpich >=3.4,<4.0.0a0 conda-forge/osx-64
就个人而言,我通常使用树格式,与
(so-mpi4py) $ mamba repoquery whoneeds --tree mpich
mpich[3.4.2]
└─ mpi4py[3.1.3]
真实世界的例子
更多的是对其有用性的证明,我注意到我的一个 R 环境不知何故最终安装了 Python。我对此很严格,所以我伸手去拿mamba repoquery whoneeds
,发现:
(bioc_3_12) host:dir usr$ mamba repoquery whoneeds -t python
Executing the query python
python[3.9.2]
├─ numpy[1.20.2]
│ └─ colormath[3.0.0]
│ └─ spectra[0.0.11]
│ └─ r-rspectra[0.16_0] # <- this package is the culprit!
│ └─ r-uwot[0.1.10]
├─ networkx[2.5]
│ └─ colormath already visited
├─ certifi[2021.5.30]
│ └─ setuptools[49.6.0]
│ ├─ networkx already visited
│ └─ pip[21.0.1]
├─ python_abi[3.9]
│ ├─ numpy already visited
│ ├─ certifi already visited
│ └─ setuptools already visited
├─ colormath already visited
├─ spectra already visited
├─ decorator[4.4.2]
│ └─ networkx already visited
├─ wheel[0.36.2]
│ └─ pip already visited
├─ pip already visited
└─ setuptools already visited
r-spectra
结果发现Conda Forge 中的包配方错误地将其依赖项之一声明为 Python 包 ( spectra
) 而不是 C++ 动态库 ( spectralib
)。