创建空环境时 conda 的奇怪行为
Weird behavior of conda when creating empty environments
我使用以下命令创建了一个没有指定任何包的 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 可执行文件!您可以使用 which python
或 python -c "import sys; print(sys.executable)"
检查。另见我的 .
当您安装 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
由于这只是一个文本文件,您可以编辑和删除任何不需要的包。
我使用以下命令创建了一个没有指定任何包的 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 可执行文件!您可以使用 which python
或 python -c "import sys; print(sys.executable)"
检查。另见我的
当您安装 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
由于这只是一个文本文件,您可以编辑和删除任何不需要的包。