anaconda - 创建空环境时 conda 的奇怪行为

标签 anaconda conda

我使用以下命令创建了一个 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/

相关文章:

python - 在 Ubuntu 20.04 LTS 中安装 Miniconda

python - 构建 conda 包 : The package must be rebuilt with conda-build > 2. 0

bash - 更新conda后如何从终端提示中删除(base)

python - Conda:将本地开发包安装到单个 conda 环境中

python - 如何在 Mac 上的 Colab 下从 Anaconda 内部安装 'plotly'

python - 将 py 文件转换为 exe,找不到现有的 PyQt5 插件目录

python - 如何设置默认的 conda 环境,以便每当我打开终端时它应该被激活而不是基础?

python - 无法在 Ubuntu 中安装 Pytorch

python - conda 中不提供 Pip 包

python - 如何确保 conda 的环境特定路径位于 sys.path 的顶部?