如何将conda环境"克隆"到根环境中?

mik*_*305 24 python anaconda conda

我希望conda的root环境能够复制另一个环境中的所有软件包.如何才能做到这一点?

pyl*_*ang 39

如果您尝试将包从第二个环境导入根环境,请将包名称从第二个环境导出到yaml文件,然后更新第一个环境.在第二个环境中,运行:

> conda env export > environment.yml  
Run Code Online (Sandbox Code Playgroud)

有关conda env详细信息,请参阅 或者,考虑捆绑的Anaconada Navigator桌面程序,以获得更加图形化的体验.

建议:在尝试更改root之前备份现有环境(请参阅第一个命令),并通过在演示环境中测试这些命令来验证所需结果.


更新:另请参阅--clone可用于克隆环境的标志:

> conda env update -n root -f envoronment.yml     
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅文档

  • 这种技术似乎只适用于使用 conda 或 pip 安装的软件包,对吧?某些未使用简单 conda 或 pip 包管理器安装的包无法工作。例如,使用 Bazel 构建的 Tensorflow 不会通过 yaml 文件复制到新环境。 (2认同)

Dev*_*evC 17

根环境被命名为base,你可以使用以下命令,使用Anaconda3-5.0.1为我工作

conda create --name <env_name> --clone base
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令列出在conda环境中安装的所有软件包

conda list -n <env_name>
Run Code Online (Sandbox Code Playgroud)


小智 8

当设置一个新环境并且我需要在我的新环境中的基础环境中的包时(通常是这种情况),我在提示中使用 spec-file.txt 构建了一个相同的 conda 环境:

conda list --explicit > spec-file.txt
Run Code Online (Sandbox Code Playgroud)

规范文件包括例如基础环境的包。

然后使用提示将软件包安装到新环境中:

conda install --name myenv --file spec-file.txt
Run Code Online (Sandbox Code Playgroud)

来自 base 的包随后可在新环境中使用。

整个过程在文档中进行了描述:https : //docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#building-identical-conda-environments

  • 这不会复制 pip 安装的软件包。我认为值得注意。 (2认同)

she*_*ero 7

我也遇到了将环境克隆到另一台机器上的麻烦,想提供一个答案。我遇到的关键问题是当当前环境包含无法直接从conda installpip install. 对于这些情况,我强烈推荐conda-pack(请参阅此答案):

pip install conda-pack
Run Code Online (Sandbox Code Playgroud)

或者,

conda install conda-pack
Run Code Online (Sandbox Code Playgroud)

然后备份环境,使用当前环境只需省略 my_env 名称,

# Pack environment my_env into my_env.tar.gz
$ conda pack -n my_env

# Pack environment my_env into out_name.tar.gz
$ conda pack -n my_env -o out_name.tar.gz

# Pack environment located at an explicit path into my_env.tar.gz
$ conda pack -p /explicit/path/to/my_env
Run Code Online (Sandbox Code Playgroud)

和恢复,

# Unpack environment into directory `my_env`
$ mkdir -p my_env
$ tar -xzf my_env.tar.gz -C my_env

# Use Python without activating or fixing the prefixes. Most Python
# libraries will work fine, but things that require prefix cleanups
# will fail.
$ ./my_env/bin/python

# Activate the environment. This adds `my_env/bin` to your path
$ source my_env/bin/activate

# Run Python from in the environment
(my_env) $ python

# Cleanup prefixes from in the active environment.
# Note that this command can also be run without activating the environment
# as long as some version of Python is already installed on the machine.
(my_env) $ conda-unpack
Run Code Online (Sandbox Code Playgroud)