掌握Conda环境迁移的几种方式,从此不在重复配环境

Conda是广为熟知的包管理器和虚拟环境管理器。最近我在Github上找到一个项目花费了3天时间在服务器A上,配好了环境并跑通了模型,但由于服务器A短时间我用不了,于是自己就在另一台服务器上配环境,无奈配了一天也还是没配好,索性就上网了解到了 Conda 环境迁移的几种方式,结果就是 工作效率火箭式的上升,开心到飞起鸭。

一、环境迁移—情况1
我们在本地电脑已经配好了虚拟环境A,但是自己需要 备份环境A 或者 有人想省事直接使用我们配好的环境A,这种情况下,我们可以采用以下两种方式:

使用下面的conda命令 直接创建环境的快照或者备份:
conda create --name snapshot --clone myenv
1
直接把 环境A 复制下(然后改个文件名就好)就OK了。
二、环境迁移—情况2
我们在本地电脑已经配好了虚拟环境A,如果我们需要在具有 相同平台和操作系统 的计算机之间复制环境,第一种方式就是利用以下命令直接生成 spec list文件,具体操作如下。

生成spec list 文件
conda list --explicit > spec-list.txt
1
根据生成的 spec-list.txt 实现 环境的复制
conda create --name python-course --file spec-list.txt
1
第二种方式就是利用 conda-pack 命令直接对环境进行 打包。要想使用 conda-pack 包对环境打包实现环境迁移,我们需要提前安装一下 conda-pack包,conda-pack包是一个命令行工具,主要用于打包conda环境(包括环境中安装的软件包的所有二进制文件),此方法最好的地方就是 在没有网络的情况下仍可实现环境的复现,简直不要太优秀,下面说一下使用 conda-pack 的具体操作。

安装conda-pack包
conda install -c conda-forge conda-pack
1
或者

pip install conda-pack
1
使用 conda pack 命令开始打包环境
# 将名字为 my_env 的虚拟环境 打包为 my_env.tar.gz(默认就是这形式)
conda pack -n my_env

# -o 就是给导出的虚拟环境重新命名,所以导出来的虚拟环境名字为 out_name.tar.gz
conda pack -n my_env -o out_name.tar.gz

# 指定虚拟环境包的输出路径
conda pack -p /explicit/path/to/my_env

三、环境迁移—情况3
我们在本地电脑已经配好了虚拟环境A,然后我们需要在 不同平台和操作系统 之间 复现环境,我们可以使用以下命令生成 .yml文件。

导出 environment_name.yml 文件
conda env export > environment.yml
1
利用生成的environment_name.yml 文件复现环境
conda env create -f environment.yml
1
总结:
Conda-Pack 打包环境方式在目标计算机无法联网或者网络不畅时很好用,而Conda导出 environment.yml 的方式非常适合在不同平台和操作系统之间重新创建环境。

THE END