在 anaconda 环境中搜索安装了某个包的 envs

Search anaconda environments for envs where a certain package has been installed

我在开源 python 库上提交了一个问题,并收到了开发人员无法重现错误的反馈。我已将该软件包安装到 conda 环境中,我想弄清楚我将软件包安装到哪个(些)环境中,以便我可以尝试在其原始环境中重现该问题。问题是我有好几个 conda envs 要戳,我现在的 "activate an environment -> start python interpreter -> try to import the package -> exit interpreter -> deactivate environment" 策略变老了。

有没有一种简单的方法可以列出包含某个包的所有环境?类似于:

conda info --envs --package=PackageName

编辑:我已经想出如何检查包是否安装在我的任何环境中。仍然没有提醒我哪个环境有这个包,如果这个包存在就告诉我一个命中:

Continuum/anaconda3/condabin/conda.bat info --envs | awk '{print }' | xargs -ix Continuum/anaconda3/condabin/conda.bat list -n x | grep packagename

这是在 windows 机器上,使用 git bash shell,工作目录设置为 /c/Users/userName/AppData/Local

EDIT2:这是我的最终解决方案:

echo Continuum/anaconda3/envs/*/lib/site-packages/PACKAGENAME | sed -E 's/[^ ]+envs\/([^/]+)\/lib[^ ]+//g' | tr " " "\n"

使用Anaconda Navigator怎么样,有一个已安装插件的列表。 (不确定这是否会更快,有时加载包需要很长时间。)

这甚至适用于停用的环境:

# conda env list ## to list all environments
conda list -n myenv packagename

(可能是愚蠢的问题:包名的简单 grep 行不通?)

编辑:根据您上次的编辑:

Continuum/anaconda3/condabin/conda.bat info --envs | awk '{if ( != "#") {print }}' | xargs -ix Continuum/anaconda3/condabin/conda.bat list -n x packagename | grep -B 3 packagename

(-B 3 在匹配前打印 3 行,稍微修改了 awk 命令以跳过 '#' envs。将包名添加到列表中,否则使用 -B 3 破解将不起作用)

如果它是一个 Python 包,那么一个又快又脏的包是

echo Continuum/anaconda3/envs/*/lib/python*/site-packages/packagename

列出每个安装位置(不包括 base)。如果你只想要名字那么你可以提取它...

echo Continuum/anaconda3/envs/*/lib/python*/site-packages/packagename |\
sed -E 's/[^ ]+envs\/([^/]+)\/lib[^ ]+//g'