我们知道anaconda是一个python环境管理工具,因为不同的任务所需的python版本和包不同,可以方便的使用anaconda创建相应的python环境。conda创建一个环境之后激活环境,随后就可以使用该环境下的python进行相应操作。
今天碰到一个需求,我在主机上使用conda创建的项目对应的python环境需要迁移到服务器上,如果从头安装python环境就会很麻烦,这时候可以使用anaconda的环境分享功能。
- 首先在本机的conda上执行:
conda env export -n ${env_name}> environment.yml
- 将本机上生成的environment.yml传输到服务器上
- 服务器上执行
conda env create -f environment.yml
记录一个bug:
当我在windows中生成environment.yml
之后传输到linux上,进行conda env create
时,出现问题:
-
删除
environment.yml
中的清华源:
因为conda执行时解析源是有步骤的,先使用你environment.yml
配置的源,然后再使用默认的源(默认linux保存在/home/wxw/.condarc
中),我们先删除environment.yml
配置的源,让conda直接使用默认的源进行下载:
-
修改默认的源:
vim ~/.condarc
:
channels:
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- defaults
show_channel_urls: true
default_channels:
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
custom_channels:
conda-forge: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
- 现在再运行,不报http错误了,连上conda源了,单数出现了以下错误:
说这个包找不到,完了我查资料发现了github上面有人这么说:
就是说导出environment.yml
的时候,因为是在windows上面导出的,加上了一些在linux上不存在的依赖,因此在导出environment.yml
的时候加上一个--no-builds
就可以放松导出时候的依赖。
加上--no-builds
之后确实少了一些windows中的依赖,但是我在执行时发现还有有一些依赖在linux中无法找到,我这回是真恼了,直接在environment.yml
把这些依赖给删了。
再次执行,成功