美文网首页
【Linux】安装了两个conda,如何迁移虚拟环境?

【Linux】安装了两个conda,如何迁移虚拟环境?

作者: 皮卡丘052 | 来源:发表于2021-12-24 00:24 被阅读0次

    写在前面

    不知不觉就把事情搞复杂,是我的天赋Orz...
    这篇终于解决了Linux集群关于conda的历史遗留问题。
    事情是这样的,最早我接触集群的时候,所有人的软件都是安装到一个叫software的文件夹下的,当时刚了解conda,看到集群有其他人装过Anaconda2,就简单设置了个环境变量就开始构建我的各种虚拟环境了。
    这个过程中遇到很多问题,尤其是安装R和R包的安装过程,各种报错和无法安装,那个时候我以为是conda不好用,现在看其实是安装权限的问题。
    于是,在又双叒叕遇到R包安装限制的时候,我痛定思痛终于在自己目录下安装了Anaconda3。
    随着R装包限制的解除,新的问题又来了,我之前辛辛苦苦调试好的各种虚拟环境随着conda环境变量的改变,难道都不能用了么???
    所以,我要解决的问题是“在同一个Linux集群上安装了两个conda,如何迁移虚拟环境?
    下面请欣赏我摸爬滚打的过程。。。

    初级解决方法

    最初的我懒得动脑,就搞了个最麻烦的办法,就是同时设置两个conda的环境变量,使用哪个conda的虚拟环境,就把另外一个注释掉。

    vi ~./bashrc
    #conda 1
    export PATH="/software/Anaconda2/bin/:$PATH"
    #conda 2
    #export PATH="/myname/Anaconda3/bin/:$PATH"
    

    但问题是,我总有同时需要两个conda创建的虚拟环境的时候吧,比如我用conda 1创建的py3.5环境提交了一个脚本,但又想用conda 2创建的R4.0环境画图,那怎么办,总不能单线程处理问题,那太浪费时间了。

    于是我开始问度娘,得到了这个问题的解决方法。

    进阶解决方法

    迁移虚拟环境,然后环境变量的conda就只设置自己目录下的那个地址。

    进阶方法一

    参考:conda虚拟环境离线迁移(Linux系统亲测好用)
    这个方法也可以打包一份所有的虚拟环境备份保存,便于以后使用。

    Step1:激活想要迁移的虚拟环境,在其中安装conda-pack工具包
      source activate env_name
      conda install conda-pack
      conda isntall -c conda-forge conda-pack
      或者采用pip安装
      pip install conda-pack
      或者采用pip从git源码安装
      pip install git+https://github.com/conda/conda-pack.git
    
    Step2:将当前虚拟环境打包
      conda-pack
      ls
      # env_name.tar.gz 即为打包完成的输出文件
      conda deactivate
    
    Step3:将example.tar.gz迁移到其他路径或其他机器
      mv env_name.tar.gz ~/computer_two
    
    Step4:在另一台机器上或是目录下解包
      cd ~/computer_two/
      # env_name.tar.gz 即为迁移过来的环境包
      mkdir env_name
      tar -xf env_name.tar.gz -C env_name
      ls
      # env_name.tar.gz env_name
    
    Step5:激活虚拟环境
    
    source env_name/bin/activate
    #如果上面命令提示激活不成功,或报错
    #报错信息 conda /activate: No such file or directory
    #解决方法(参考:https://blog.csdn.net/u014636245/article/details/83933402)
    conda activate env_name
    #重新设置下~./bashrc里conda的路径
    source ~/.bashrc
    

    但我操作过程中遇到某些虚拟环境下没有conda-pack并且这个死活安装不上的情况
    然后我发动win系统下不打包直接移动文件夹的小心思,简单粗暴的解决了这个问题。
    设置conda虚拟环境亲测可以,但类似其他操作有风险,可能会有软件依赖的情况,需谨慎处理

    进阶方法二

    直接将conda 1 的envs文件夹下你想要迁移的虚拟环境复制到conda 2 的envs文件夹下,然后更新下环境变量即可。

    cp -r /conda01/envs/py35 /conda02/envs/
    #刷新下环境变量
    source ~/.bashrc (/conda02/bin)
    #激活环境
    source activate py35
    #再次刷新下环境变量
    source ~/.bashrc
    

    此外,如果你想解决虚拟环境下某些安装包限制的问题,可以尝试修改Anaconda文件夹的权限和虚拟环境的权限来尝试解决,命令为chmod何chown。

    另外,有另外一篇帖子ubuntu 安装两个Anaconda,并迁移虚拟环境写如何修改默认的conda环境,也可以参考一二。

    如果有更好地方法解决这个问题,或是可以把其中的内在逻辑或原理讲的很清楚的大神,欢迎评论区或私信指点一二,不胜感激。

    相关文章

      网友评论

          本文标题:【Linux】安装了两个conda,如何迁移虚拟环境?

          本文链接:https://www.haomeiwen.com/subject/uiakqrtx.html