"clone" conda环境如何进入root环境?
How can you "clone" a conda environment into the root environment?
我希望 conda 的根环境将所有包复制到另一个环境中。如何才能做到这一点?
有选项可以将依赖项 names/urls/versions 复制到文件。
推荐
通常情况下,在新环境中工作比改变 root
更安全。但是,请考虑在尝试更改之前备份现有环境。通过在演示环境中测试这些命令来验证所需的结果。例如,要备份您的 root
环境:
λ conda activate root
λ conda env export > environment_root.yml
λ conda list --explicit > spec_file_root.txt
选项
选项 1 - YAML 文件
在第二个环境中(例如myenv
),export names+到yaml文件:
λ activate myenv
λ conda env export > environment.yml
然后 update the first environment+(例如 root
)与 yaml 文件:
λ conda env update --name root --file environment.yml
选项 2 - 克隆环境
使用 --clone
标志克隆环境(参见@DevC 的 post):
λ conda create --name myclone --clone root
这基本上创建了环境的直接副本。
选项 3 - 规范文件
创建一个 spec-file++ 以附加来自环境的依赖项(请参阅@Ormetrom):
λ activate myenv
λ conda list --explicit > spec_file.txt
λ conda install --name root --file spec_file.txt
或者,复制一个新环境(推荐):
λ conda create --name myenv2 --file spec_file.txt
另请参阅
conda env
有关 env 子命令的更多详细信息。
- Anaconada Navigator 桌面程序以获得更图形化的体验。
- Docs 更新命令。对于较旧的 conda 版本,请使用
activate
(Windows) 和 source activate
(Linux/Mac OS)。较新版本的 conda 可以使用 conda activate
(这可能需要通过 conda init
使用您的 shell 配置进行一些设置)。
- Discussion 保持
conda env
额外内容
似乎有一个未记录的 conda run
选项可以帮助在特定环境中执行命令。
# New command
λ conda run --name myenv conda list --explicit > spec_file.txt
后面的命令在没有activation/deactivation步骤的环境中对运行命令有效。请参阅下面的等效命令:
# Equivalent
λ activate myenv
λ conda list --explicit > spec_file.txt
λ deactivate
请注意,这可能是一项实验性功能,因此在正式采用 public API.
之前,这可能不适合生产
+Conda 文档自原始 post 以来已更改;链接已更新。
++规范文件仅适用于在相同 OS 上创建的环境。与前两个选项不同,spec-files 只捕获到 conda 依赖项的链接;不包括 pip 依赖项。
要复制您的根环境(名为 base
),您可以使用以下命令;使用 Anaconda3-5.0.1 为我工作:
conda create --name <env_name> --clone base
你可以使用以下命令列出conda环境中安装的所有包
conda list -n <env_name>
在设置新环境时,我需要新环境中基础环境中的包(通常是这种情况),我在提示符下使用 spec-[=23= 构建相同的 conda 环境] 与:
conda list --explicit > spec-file.txt
规范文件包含例如基础环境的包。
然后使用提示将软件包安装到新环境中:
conda create --name myenv --file spec-file.txt
然后可以在新环境中使用 base 中的包。
我也 运行 遇到将环境克隆到另一台机器的麻烦,想提供一个答案。当当前环境包含无法直接从 conda install
或 pip install
获得的开发包时,我遇到的关键问题是解决错误。对于这些情况,我强烈建议 conda-pack (see this answer):
pip install conda-pack
或者,
conda install conda-pack
然后备份环境,使用当前环境只需要省略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
正在恢复,
# 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
我希望 conda 的根环境将所有包复制到另一个环境中。如何才能做到这一点?
有选项可以将依赖项 names/urls/versions 复制到文件。
推荐
通常情况下,在新环境中工作比改变 root
更安全。但是,请考虑在尝试更改之前备份现有环境。通过在演示环境中测试这些命令来验证所需的结果。例如,要备份您的 root
环境:
λ conda activate root
λ conda env export > environment_root.yml
λ conda list --explicit > spec_file_root.txt
选项
选项 1 - YAML 文件
在第二个环境中(例如myenv
),export names+到yaml文件:
λ activate myenv
λ conda env export > environment.yml
然后 update the first environment+(例如 root
)与 yaml 文件:
λ conda env update --name root --file environment.yml
选项 2 - 克隆环境
使用 --clone
标志克隆环境(参见@DevC 的 post):
λ conda create --name myclone --clone root
这基本上创建了环境的直接副本。
选项 3 - 规范文件
创建一个 spec-file++ 以附加来自环境的依赖项(请参阅@Ormetrom):
λ activate myenv
λ conda list --explicit > spec_file.txt
λ conda install --name root --file spec_file.txt
或者,复制一个新环境(推荐):
λ conda create --name myenv2 --file spec_file.txt
另请参阅
conda env
有关 env 子命令的更多详细信息。- Anaconada Navigator 桌面程序以获得更图形化的体验。
- Docs 更新命令。对于较旧的 conda 版本,请使用
activate
(Windows) 和source activate
(Linux/Mac OS)。较新版本的 conda 可以使用conda activate
(这可能需要通过conda init
使用您的 shell 配置进行一些设置)。 - Discussion 保持
conda env
额外内容
似乎有一个未记录的 conda run
选项可以帮助在特定环境中执行命令。
# New command
λ conda run --name myenv conda list --explicit > spec_file.txt
后面的命令在没有activation/deactivation步骤的环境中对运行命令有效。请参阅下面的等效命令:
# Equivalent
λ activate myenv
λ conda list --explicit > spec_file.txt
λ deactivate
请注意,这可能是一项实验性功能,因此在正式采用 public API.
之前,这可能不适合生产+Conda 文档自原始 post 以来已更改;链接已更新。 ++规范文件仅适用于在相同 OS 上创建的环境。与前两个选项不同,spec-files 只捕获到 conda 依赖项的链接;不包括 pip 依赖项。
要复制您的根环境(名为 base
),您可以使用以下命令;使用 Anaconda3-5.0.1 为我工作:
conda create --name <env_name> --clone base
你可以使用以下命令列出conda环境中安装的所有包
conda list -n <env_name>
在设置新环境时,我需要新环境中基础环境中的包(通常是这种情况),我在提示符下使用 spec-[=23= 构建相同的 conda 环境] 与:
conda list --explicit > spec-file.txt
规范文件包含例如基础环境的包。
然后使用提示将软件包安装到新环境中:
conda create --name myenv --file spec-file.txt
然后可以在新环境中使用 base 中的包。
我也 运行 遇到将环境克隆到另一台机器的麻烦,想提供一个答案。当当前环境包含无法直接从 conda install
或 pip install
获得的开发包时,我遇到的关键问题是解决错误。对于这些情况,我强烈建议 conda-pack (see this answer):
pip install conda-pack
或者,
conda install conda-pack
然后备份环境,使用当前环境只需要省略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
正在恢复,
# 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