问题:Anaconda导出环境文件
如何制作可以在其他计算机上使用的anaconda环境文件?
我使用将Anaconda python环境导出到YML conda env export > environment.yml
。导出的environment.yml
内容包含此行prefix: /home/superdev/miniconda3/envs/juicyenv
,它映射到我的anaconda的位置,这在其他计算机上将有所不同。
回答 0
我在conda
规范中找不到任何可让您导出环境文件的内容prefix: ...
。但是,正如Alex在评论中指出的那样,从文件创建环境时,conda似乎并不关心前缀行。
考虑到这一点,如果您希望其他用户不了解您的默认安装路径,则可以grep
在写入之前删除前缀行environment.yml
。
conda env export | grep -v "^prefix: " > environment.yml
无论哪种方式,另一个用户都可以运行:
conda env create -f environment.yml
并且该环境将安装在其默认的conda环境路径中。
如果您要指定与系统默认设置不同的安装路径(与environment.yml中的’prefix’不相关),只需使用-p
标记后跟所需的路径即可。
conda env create -f environment.yml -p /home/user/anaconda3/envs/env_name
请注意,Conda建议environment.yml
手动创建,这对于要跨平台(Windows / Linux / Mac)共享环境的用户尤其重要。在这种情况下,您可以省略该prefix
行。
回答 1
从要安装在另一台计算机上的环境中保存软件包的最简单方法是:
$ conda list -e > req.txt
然后您可以使用安装环境
$ conda create -n new environment --file req.txt
如果使用pip
,请使用以下命令:reference https://pip.pypa.io/en/stable/reference/pip_freeze/
$ env1/bin/pip freeze > requirements.txt
$ env2/bin/pip install -r requirements.txt
回答 2
的Linux
conda env导出-无构建| 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
...
您可以转而无需构建信息即可导出环境:
$ conda env export --no-builds
...
dependencies:
- backcall=0.1.0
- blas=1.0
- boto=2.49.0
...
这使环境与Python版本和OS脱钩。
回答 3
我发现仅以字符串格式导出软件包比导出整个conda
环境更方便。正如前面的答案已经建议的那样:
$ conda list -e > requirements.txt
但是,它requirements.txt
包含内部版本号,这些版本号在操作系统之间(例如Mac
和之间)不可移植Ubuntu
。在conda env export
我们可以选择--no-builds
但没有的情况下conda list -e
,因此我们可以通过发出以下命令来删除内部版本号:
$ sed -i -E "s/^(.*\=.*)(\=.*)/\1/" requirements.txt
并在另一台计算机上重新创建环境:
conda create -n recreated_env --file requirements.txt
回答 4
- 首先激活您的conda环境(您要导出/备份的环境)
conda activate myEnv
- 将所有包导出到文件(myEnvBkp.txt)
conda list --explicit > myEnvBkp.txt
- 恢复/导入环境:
conda create --name myEnvRestored --file myEnvBkp.txt