Anaconda 创建空环境时conda的怪异行为

Anaconda 创建空环境时conda的怪异行为,anaconda,conda,Anaconda,Conda,我使用以下命令创建conda环境,而不指定任何包: conda create --name test_env 然后,我可以在test_env内部使用根环境中的所有包(但它们不会出现在conda list和conda env export的输出中)。这已经出乎我的意料,但当我在该环境中安装某些东西时,真正的问题就开始了,例如: conda install pywavelets 之后,pywavelets是可用的,但所有其他不依赖于pywavelets的包都会在环境中消失(例如,pandas)。

我使用以下命令创建conda环境,而不指定任何包:

conda create --name test_env
然后,我可以在test_env内部使用根环境中的所有包(但它们不会出现在conda list和conda env export的输出中)。这已经出乎我的意料,但当我在该环境中安装某些东西时,真正的问题就开始了,例如:

conda install pywavelets
之后,pywavelets是可用的,但所有其他不依赖于pywavelets的包都会在环境中消失(例如,pandas)。我不明白为什么会这样。有人对此有解释吗

更重要的是,这对于使用conda环境的最佳实践意味着什么?我是否应该始终创建至少指定python的环境(conda create--name test_env python)?然而,我必须在那种相当麻烦的环境中手工安装所有东西。因此,我现在的想法是为我创建的所有环境指定anaconda:

conda create --name test_env anaconda

然而,缺点是conda list和conda env export列出的依赖项列表变得不必要的长(例如,甚至列出了Anaconda Navigator)。有人有更好的解决方案吗?

在创建环境时,如果不指定Python版本,您可以使用根环境中的所有包,这是因为您实际使用的是根环境的Python可执行文件!您可以使用
whichpython
python-c“import sys;print(sys.executable)”
检查。另见我的报告

安装
pywavelets
时,其中一个依赖项是(可能)Python,因此在您的环境中安装了一个新的Python可执行文件。因此,当您运行Python时,它只拾取安装在
测试环境中的包

如果希望从其他环境中获取所有包,可以创建一个列出所有包的文件,然后使用该文件创建一个新环境,如Conda文档中所述: 概括

conda list --explicit > spec-file.txt
conda create --name myenv --file spec-file.txt
或安装到现有环境中

conda install --name myenv --file spec-file.txt

因为这只是一个文本文件,所以您可以编辑和删除任何不需要的包。

我知道我可以使用上面介绍的命令创建一个相同的环境,这不是我在这里要做的。我只是对创建环境时没有指定任何内容的行为感到非常惊讶。现在明白了,谢谢你的解释!我之所以提到相同的环境,是因为您询问是否必须手动指定所需的所有软件包。答案是肯定的,除非使用包含适当定义的文件。