在 anaconda 环境中搜索已安装特定软件包的环境



我在开源 python 库上提交了一个问题,并收到开发人员无法重现该错误的反馈。我已将软件包安装到 conda 环境中,我想弄清楚我将软件包安装到哪个环境中,以便我可以尝试在其原始环境中重现该问题。问题是我有几个 conda env 需要戳穿,而我目前的"激活环境 ->启动 python 解释器 ->尝试导入包 ->退出解释器 ->停用环境"的策略已经过时了。

有没有一种简单的方法来列出包含某个包的所有环境?像这样:

conda info --envs --package=PackageName

编辑:我已经想出了如何检查软件包是否安装在我的任何环境中。仍然没有提醒我哪个环境有包,只是向我显示包是否存在的命中:

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

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

编辑2:这是我的最终解决方案:

echo Continuum/anaconda3/envs/*/lib/site-packages/PACKAGENAME | sed -E 's/[^ ]+envs/([^/]+)/lib[^ ]+/1/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 ($1 != "#") {print $1}}' | xargs -ix Continuum/anaconda3/condabin/conda.bat list -n x packagename | grep -B 3 packagename

(-B 3 在匹配前打印 3 行,稍微修改了 awk 命令以跳过"#"环境。将软件包名称添加到列表中,否则使用 -B 3 进行黑客攻击将不起作用(

如果它是一个 Python 包,那么一个快速而肮脏的将是

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

列出安装的每个位置(不包括基本位置(。如果您只想要名称,那么您可以提取它...

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

最新更新