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