在anaconda环境中搜索已安装某些软件包的env

时间:2019-10-10 17:00:40

标签: python pip anaconda conda virtual-environment

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

是否有一种简单的方法可以列出包含特定软件包的所有环境?像这样:

conda info --envs --package=PackageName

编辑:我已经弄清楚了如何检查我的环境中的 any 中是否安装了软件包。仍然不会提醒我该软件包所在的环境,只是告诉我该软件包是否存在:

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

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

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

2 个答案:

答案 0 :(得分:1)

有关使用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命令以略过“#” envs。将软件包名称添加到列表中,否则用-B 3破解将无效)

答案 1 :(得分:1)

如果它是Python程序包,那将是又快又脏的

final

列出安装的每个位置(基本除外)。如果只想要名称,则可以提取它...

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