Anaconda环境迁移

2022-11-02 10:17:26 浏览数 (1)

以下文章来源于气象备忘录 ,作者蓝胖 小姜

conda可以很方便地管理不同项目的环境,避免相互污染,常用命令如下:

代码语言:javascript复制
# 创建环境
conda create -n py36 python=3.6
# 激活环境 
source activate py36
# 退出环境 
source deactivate
# 删除环境 
conda remove -n py36 --all
# 查看所有环境 
conda env list
# 查看当前环境安装包 
conda list

在日常的工作和学习中,可能手头有很多服务器,在一台服务器上搭建了合适的开发环境,如何高效地复制到所有机器上呢?这里主要以目标服务器是否可以联网,介绍了如何方便地迁移虚拟环境。

  1. 目标机器可以访问互联网:
  • 先激活需要迁移的环境,然后通过conda env export > pyn_env.yml 导出当前环境的一些配置信息
  • 将 pyn_env.yml 文件拷贝到目标机器上,执行 conda env create -f pyn_env.yml(确保目标机器已经安装了Anaconda,下同)。
  1. 目标机器不可以访问互联网:

使用Conda-Pack来进行环境的打包和迁移

  • 在可以联网的机器上配置好需要的环境后,通过conda install -c conda-forge conda-pack 安装打包程序;
  • 通过 conda pack -n wrfpy -o wrfpy.tar.gz 将需要的环境打包,并拷贝到目标机器;
  • 在目标机器上新建目录 mkdir -p $Anaconda/envs/wrfpy;
  • 解压 tar -xzf wrfpy.tar.gz -C $Anaconda/envs/wrfpy;
  • 此时 conda env list 就可以看到该环境了;
  • activate wrfpy 激活环境,执行 conda-unpack,大功告成!

自学气象人小编补充:

如果需要迁移的是base环境的话,在可以联网的机器上操作时,可能会报下面的错误:

这个时候我们需要对pyn_env.yml文件进行简单的修改。通过 vim pyn_env.yml 命令将 yml 文件中的 name 由 base 改成任意非 base 的环境名即可成功运行,如 wrf_env 。

此外,如果想要把刚刚迁入的新环境作为默认环境,即登录 shell 时自动进入该环境的话,可以通过修改 ~/.bash_profile 文件,只需要在该文件中加入一行 conda activate wrf_env 。至于为什么建议修改 .bash_ profile 而不是 .bashrc ,可以见【科研利器】关于 “.bash_profile” 和 “.bashrc”区别的总结。

参考:

代码语言:javascript复制
https://docs.conda.io/projects/conda/en/latest/userguide/tasks/manage-environments.html#create-env-from-file

0 人点赞