小背景
用conda搭环境有时候让人很头疼,有些分析工具动不动就几百个依赖包(例如qiime2),下载下到天荒地老,而且有些包只有国外的chanel有,国内的镜像chanel有时候就没有或者版本不是最新版本,并且国内网络环境与世隔绝,让原本并不富裕的家庭更加雪上加霜。而且很多时候我们又需要重新搭环境,比如重装系统啦、换电脑啦,那么有没有什么方法可以直接拷贝别人或自己之前已经搭建好的环境呢,答案是可以的,conda的环境就是可以简单的复制粘贴,只不过需要一丢丢的配置!
网络上能找到移植方法
01
生成yml文件
1首先导出配置文件:conda env export -- name
2
3根据配置文件导入环境:conda env create -f name.yml
02
地址复制
1首先找到要复制的环境的路径:conda info --env
2
3然后利用克隆命令复制到你要配的账户:conda create -n name --clone path
其实这里的path可以是任何你存放环境的路径。我一开始看到--clone这个参数,还以为它是直接简单的文件拷贝,结果并不是,它还是要重新下载那些包。我特地把qiime2的环境拷贝到其他路径进行试验,截图如下:
- 被clone的环境我直接放在我的家目录了
- conda也就直接读取这个环境目录下安装了哪些包然后重新下载到新环境
所以以上两种方法还是逃不过重新下载的命运!!
今天要分享的方法
就是直接把整个环境文件夹打包复制,拷到别的电脑的conda的envs目录下面,解压后稍加配置就能用,不需要重新下载那些包。(只适用于同系统平台间的拷贝,因为环境里面的可执行文件是不跨平台的)
视频教程如下:
腾讯视频高清链接
https://v.qq.com/x/page/m3113el19ab.html
替换命令
程序执行路径错误
1.需要更改的可执行文件还有里面的路径根据自己的实际情况修改,这里这是以qiime2为例。
2.如果之前环境的路径跟目标拷贝环境的路径一致就不用替换了,比如你重装系统后还是用同一个用户名,conda也放在同一个位置。
- qiime
1$ sed -i '1 s/#!\/root/#!\/home\/xjm/g' /home/xjm/miniconda3/envs/qiime2/bin/qiime
- Rscript要重新拷贝一个正常的Rscript可执行文件
1$ cp /home/xjm/miniconda3/envs/metawrap-env/bin/Rscript /home/xjm/miniconda3/envs/qiime2/bin/Rscript
如果没有正常的Rscript文件就新建个环境
从里面拷贝
1$ conda install r-base
- R
1$ sed -i "s/\/root\/miniconda3\/envs/\/home\/xjm\/miniconda3\/envs/g" /home/xjm/miniconda3/envs/qiime2/bin/R
2$ sed -i "s/\/root\/miniconda3\/envs/\/home\/xjm\/miniconda3\/envs/g" /home/xjm/miniconda3/envs/qiime2/lib/R/bin/R
- mafft
1$ sed -i "s/\/root\/miniconda3\/envs/\/home\/xjm\/miniconda3\/envs/g" /home/xjm/miniconda3/envs/qiime2/bin/mafft
qiiime2 环境打包压缩下载链接:(V-2019.10.0)
https://xiaochi-1253795707.cos.ap-guangzhou.myqcloud.com/software/qiime2.tar.gz