Anaconda导出环境文件

Lau*_*Lau 92 python python-3.x anaconda conda

如何制作可在其他计算机上使用的anaconda环境文件?

我使用了将anaconda python环境导出到YML conda env export > environment.yml.导出environment.yml包含这一行prefix: /home/superdev/miniconda3/envs/juicyenv,它映射到我的anaconda的位置,这将在其他的PC上不同.

And*_*Guy 124

我在conda规范中找不到任何允许您导出没有该prefix: ...行的环境文件的内容.但是,正如Alex在评论中指出的那样,从文件创建环境时,conda似乎并不关心前缀行.

考虑到这一点,如果您希望其他用户不知道您的默认安装路径,您可以grep在写入之前删除前缀行environment.yml.

conda env export | grep -v "^prefix: " > environment.yml
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,其他用户然后运行:

conda env create -f environment.yml
Run Code Online (Sandbox Code Playgroud)

并且环境将安装在其默认的conda环境路径中.

如果要指定与系统的默认路径不同的安装路径(与environment.yml中的'prefix'无关),只需使用-p标志后跟所需的路径.

conda env create -f environment.yml -p /home/user/anaconda3/envs/env_name
Run Code Online (Sandbox Code Playgroud)

  • ...太棒了! (2认同)

Ily*_*yas 35

  • Linux

    conda env export --no-builds | grep -v "前缀" > environment.yml

  • 视窗

    conda env export --no-builds | findstr -v "前缀" > environment.yml


理由:默认情况下,conda env export包括构建信息:

$ conda env export
...
dependencies:
  - backcall=0.1.0=py37_0
  - blas=1.0=mkl
  - boto=2.49.0=py_0
...
Run Code Online (Sandbox Code Playgroud)

您可以在没有构建信息的情况下导出您的环境:

$ conda env export --no-builds
...
dependencies:
  - backcall=0.1.0
  - blas=1.0
  - boto=2.49.0
...
Run Code Online (Sandbox Code Playgroud)

这将环境与 Python 版本和操作系统结合起来。

  • 不幸的是,在不同操作系统上安装导出和重新安装时,这并不总是有效。 (3认同)
  • 我同意这是一个很好的答案,但请考虑添加一些详细信息,说明为什么排除构建信息对于跨平台传输环境很有用。 (2认同)

jav*_*vac 31

从要安装在另一台计算机中的环境中保存包的最简单方法是:

$ conda list -e > req.txt
Run Code Online (Sandbox Code Playgroud)

然后你可以使用安装环境

$ conda create -n new environment --file req.txt
Run Code Online (Sandbox Code Playgroud)

如果您使用pip,请使用以下命令:参考https://pip.pypa.io/en/stable/reference/pip_freeze/

$ env1/bin/pip freeze > requirements.txt
$ env2/bin/pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

  • 很好,但是它似乎不适用于 pip 安装的软件包。 (2认同)

Edu*_*ido 22

首先激活您的 Conda 环境(下面,myenv 是环境的假定名称)。

conda activate myenv
Run Code Online (Sandbox Code Playgroud)

然后你只需要运行这个命令

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

请注意,您可以将environment.yml 替换为您选择的任何其他文件名。


Mai*_*ret 6

  1. 首先激活您的 conda 环境(您要导出/备份的环境)
conda activate myEnv
Run Code Online (Sandbox Code Playgroud)
  1. 将所有包导出到一个文件 (myEnvBkp.txt)
conda list --explicit > myEnvBkp.txt
Run Code Online (Sandbox Code Playgroud)
  1. 恢复/导入环境:
conda create --name myEnvRestored --file myEnvBkp.txt
Run Code Online (Sandbox Code Playgroud)


Nic*_*nie 5

我发现仅以字符串格式导出包比导出整个conda环境更具可移植性。正如之前的答案已经建议的那样:

$ conda list -e > requirements.txt
Run Code Online (Sandbox Code Playgroud)

但是,这requirements.txt包含在操作系统之间不可移植的内部版本号,例如在Mac和之间Ubuntu。在conda env export我们有选项--no-builds但没有 with conda list -e,所以我们可以通过发出以下命令来删除内部版本号:

$ sed -i -E "s/^(.*\=.*)(\=.*)/\1/" requirements.txt 
Run Code Online (Sandbox Code Playgroud)

并在另一台计算机上重新创建环境:

conda create -n recreated_env --file requirements.txt 
Run Code Online (Sandbox Code Playgroud)