寫在前面
不知不覺就把事情搞復(fù)雜,是我的天賦Orz...
這篇終于解決了Linux集群關(guān)于conda的歷史遺留問題眉孩。
事情是這樣的个绍,最早我接觸集群的時候,所有人的軟件都是安裝到一個叫software的文件夾下的浪汪,當(dāng)時剛了解conda巴柿,看到集群有其他人裝過Anaconda2,就簡單設(shè)置了個環(huán)境變量就開始構(gòu)建我的各種虛擬環(huán)境了。
這個過程中遇到很多問題死遭,尤其是安裝R和R包的安裝過程广恢,各種報錯和無法安裝,那個時候我以為是conda不好用呀潭,現(xiàn)在看其實(shí)是安裝權(quán)限的問題袁波。
于是瓦阐,在又雙叒叕遇到R包安裝限制的時候,我痛定思痛終于在自己目錄下安裝了Anaconda3篷牌。
隨著R裝包限制的解除睡蟋,新的問題又來了,我之前辛辛苦苦調(diào)試好的各種虛擬環(huán)境隨著conda環(huán)境變量的改變枷颊,難道都不能用了么戳杀??夭苗?
所以信卡,我要解決的問題是“在同一個Linux集群上安裝了兩個conda,如何遷移虛擬環(huán)境题造?”
下面請欣賞我摸爬滾打的過程傍菇。。界赔。
初級解決方法
最初的我懶得動腦丢习,就搞了個最麻煩的辦法,就是同時設(shè)置兩個conda的環(huán)境變量淮悼,使用哪個conda的虛擬環(huán)境咐低,就把另外一個注釋掉。
vi ~./bashrc
#conda 1
export PATH="/software/Anaconda2/bin/:$PATH"
#conda 2
#export PATH="/myname/Anaconda3/bin/:$PATH"
但問題是袜腥,我總有同時需要兩個conda創(chuàng)建的虛擬環(huán)境的時候吧见擦,比如我用conda 1創(chuàng)建的py3.5環(huán)境提交了一個腳本,但又想用conda 2創(chuàng)建的R4.0環(huán)境畫圖羹令,那怎么辦鲤屡,總不能單線程處理問題,那太浪費(fèi)時間了福侈。
于是我開始問度娘执俩,得到了這個問題的解決方法。
進(jìn)階解決方法
遷移虛擬環(huán)境癌刽,然后環(huán)境變量的conda就只設(shè)置自己目錄下的那個地址役首。
進(jìn)階方法一
參考:conda虛擬環(huán)境離線遷移(Linux系統(tǒng)親測好用)
這個方法也可以打包一份所有的虛擬環(huán)境備份保存,便于以后使用显拜。
Step1:激活想要遷移的虛擬環(huán)境衡奥,在其中安裝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:將當(dāng)前虛擬環(huán)境打包
conda-pack
ls
# env_name.tar.gz 即為打包完成的輸出文件
conda deactivate
Step3:將example.tar.gz遷移到其他路徑或其他機(jī)器
mv env_name.tar.gz ~/computer_two
Step4:在另一臺機(jī)器上或是目錄下解包
cd ~/computer_two/
# env_name.tar.gz 即為遷移過來的環(huán)境包
mkdir env_name
tar -xf env_name.tar.gz -C env_name
ls
# env_name.tar.gz env_name
Step5:激活虛擬環(huán)境
source env_name/bin/activate
#如果上面命令提示激活不成功,或報錯
#報錯信息 conda /activate: No such file or directory
#解決方法(參考:https://blog.csdn.net/u014636245/article/details/83933402)
conda activate env_name
#重新設(shè)置下~./bashrc里conda的路徑
source ~/.bashrc
但我操作過程中遇到某些虛擬環(huán)境下沒有conda-pack并且這個死活安裝不上的情況远荠。
然后我發(fā)動win系統(tǒng)下不打包直接移動文件夾的小心思矮固,簡單粗暴的解決了這個問題。
(設(shè)置conda虛擬環(huán)境親測可以,但類似其他操作有風(fēng)險档址,可能會有軟件依賴的情況盹兢,需謹(jǐn)慎處理)
進(jìn)階方法二
直接將conda 1 的envs文件夾下你想要遷移的虛擬環(huán)境復(fù)制到conda 2 的envs文件夾下,然后更新下環(huán)境變量即可守伸。
cp -r /conda01/envs/py35 /conda02/envs/
#刷新下環(huán)境變量
source ~/.bashrc (/conda02/bin)
#激活環(huán)境
source activate py35
#再次刷新下環(huán)境變量
source ~/.bashrc
此外绎秒,如果你想解決虛擬環(huán)境下某些安裝包限制的問題,可以嘗試修改Anaconda文件夾的權(quán)限和虛擬環(huán)境的權(quán)限來嘗試解決尼摹,命令為chmod何chown见芹。
另外,有另外一篇帖子ubuntu 安裝兩個Anaconda蠢涝,并遷移虛擬環(huán)境寫如何修改默認(rèn)的conda環(huán)境玄呛,也可以參考一二。
如果有更好地方法解決這個問題和二,或是可以把其中的內(nèi)在邏輯或原理講的很清楚的大神徘铝,歡迎評論區(qū)或私信指點(diǎn)一二,不勝感激惯吕。