蟒蛇导出环境文件

我如何才能使蟒蛇环境文件可以在其他计算机上使用?

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

254540 次浏览

我在conda规范中找不到任何允许你在没有prefix: ...行的情况下导出环境文件的东西。然而,就像注释中的亚历克斯指出一样,conda在从文件创建环境时似乎并不关心前缀行。

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

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行。

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

$ conda list -e > req.txt

然后,您可以使用

$ conda create -n <environment-name> --file req.txt

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

$ env1/bin/pip freeze > requirements.txt
$ env2/bin/pip install -r requirements.txt

我发现只导出字符串格式的包比导出整个conda环境更可移植。正如前面的答案所暗示的:

$ conda list -e > requirements.txt

然而,这个requirements.txt包含的构建号不能在操作系统之间移植,例如在MacUbuntu之间。在conda env export中,我们有选项--no-builds,但没有conda list -e,所以我们可以通过发出以下命令来删除构建号:

$ sed -i -E "s/^(.*\=.*)(\=.*)/\1/" requirements.txt

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

conda create -n recreated_env --file requirements.txt
  • Linux或Mac

Conda env export -no-builds | grep -v "prefix">environment.yml

  • 窗户

Conda env export -no-builds | findstr -v "prefix"比;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版本和操作系统解绑定。

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

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

conda activate myenv

那么您只需要运行这个命令

conda env export > environment.yml

注意,您可以替换environment。Yml与您选择的任何其他文件名。

对我来说,Conda给出的程序是有效的:

https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#sharing-an-environment

但前提是在anaconda提示/控制台中执行。

VSCode终端只生成了一个带有我的环境路径的yml文件,但没有显式的依赖包列表。

Windows用户

  1. 打开CMD
  2. 激活SpidersEnv
  3. conda env export >SpidersEnv.yml enter image description here 然后浏览用户文件夹并搜索SpidersEnv.yml 李enter image description here < / >

这也是备份(导出)你的环境的另一种方式