我使用以下命令创建了一个 conda 环境,但未指定任何包:
conda create --name test_env
然后我可以使用 test_env 内根环境中的所有包(但它们不会出现在 conda list 和 conda env export 的输出中)。这对我来说已经是出乎意料的了,但是当我在该环境中安装某些东西时,真正的问题就开始了,例如:
conda install pywavelets
之后,pywavelet 就可以使用,但所有其他不依赖于 pywavelet 的包都会在环境中消失(例如 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 可执行文件!您可以通过which python
查看或python -c "import sys; print(sys.executable)"
。另请参阅我的other answer here .
当您安装pywavelets
时,依赖项之一(可能)是 Python,因此新的 Python 可执行文件会安装到您的环境中。因此,当您运行 Python 时,它只会选取安装在 test_env
中的包。 .
如果您想要来自另一个环境的所有包,您可以创建一个列出所有包的文件,然后使用该文件创建一个新环境,如 Conda 文档中详细说明:https://conda.io/docs/user-guide/tasks/manage-environments.html#building-identical-conda-environments 总结一下
conda list --explicit > spec-file.txt
conda create --name myenv --file spec-file.txt
或安装到现有环境中
conda install --name myenv --file spec-file.txt
由于这只是一个文本文件,因此您可以编辑和删除任何不需要的包。
关于anaconda - 创建空环境时 conda 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45862252/