Linux上整體遷移Anaconda環境,所有的庫包、虛擬環境均可用,同時讓所有的用戶訪問
文章目錄:
1 問題描述
由於一開始把anaconda安裝到了:/HDD/anaconda3
路徑下,但是後面由於/HDD
空間不足,所有就需要把anaconda整體遷移,這樣就可以保住以前安裝的庫包,虛擬環境等,否則一切都要重頭再來,太麻煩了!!!
把anaconda整體從/HDD/anaconda3/
移動到/home/
路徑下
2 Linux上整體遷移Anaconda過程
2.1 移動anaconda文件到新的路徑下
mv /home/anaconda3 /home
已經成功移動到/home
目錄下,如下:
(base) [root@localhost /home]$ ls
anaconda3 project shl tools xcd zhangq
(base) [root@localhost /home]$
2.2 修改Anaconda的環境變量
2.2.1 修改~/.bashrc
中anconda環境變量
1、打開.bashrc
配置文件,
vi root/.bashrc
或vi ~/.bashrc
修改前,如下:
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/HDD/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/HDD/anaconda3/etc/profile.d/conda.sh" ]; then
. "/HDD/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/HDD/anaconda3/bin:/usr/local/gcc/bin$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
修改後,如下:(一共修改四處
,主要修改就是有關anaconda的一些環境變量的路徑
):
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/home/anaconda3/etc/profile.d/conda.sh" ]; then
. "/home/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/home/anaconda3/bin:/usr/local/gcc/bin$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
2、讓修改後的環境變量生效
source ~/.bashrc
2.3 修改可執行文件conda
1、打開conda配置文件
vi /home/anaconda3/bin/conda
2、修改conda文件
把conda第一行的路徑修改成如下:
修改前:
#!/HDD/anaconda3/bin/python
修改後:
#!/home/anaconda3/bin/python
此時在命令行中輸入conda,就會顯示一些命令參數的!
注意:
如果輸入conda顯示沒有該命令,則
重新打開一個終端再試一下
2.4 修改可執行文件pip
修改可執行文件pip之後,pip和python纔可用。沒有修改前,如果使用pip會報如下錯誤:
(base) [root@localhost /home/anaconda3/envs/mmdetection/bin]$ pip -V
-bash: /home/anaconda3/bin/pip: /HDD/anaconda3/bin/python: 壞的解釋器: 沒有那個文件或目錄
1、打開pip配置文件
vi /home/anaconda3/bin/pip
2、修改pip文件
把pip第一行的路徑修改成如下:
修改前:
#!/HDD/anaconda3/bin/python
修改後:
#!/home/anaconda3/bin/python
2.5 修改虛擬環境中的可執行文件pip
修改虛擬環境下的可執行文件pip之後,進入虛擬環境後pip和python纔可用。沒有修改前,如果在虛擬環境中使用pip會報如下錯誤(我的虛擬環境是mmdetection
):
(mmdetection) [root@localhost /home/project/mmdetection_hat]$ pip -V
-bash: /home/anaconda3/envs/mmdetection/bin/pip: /HDD/anaconda3/envs/mmdetection/bin/python: 壞的解釋器: 沒有那個文件或 目錄
1、打開pip配置文件
vi //home/anaconda3/envs/mmdetection/bin/pip
2、修改pip文件
把pip第一行的路徑修改成如下:
修改前:
/HDD/anaconda3/envs/mmdetection/bin/python
修改後:
/home/anaconda3/envs/mmdetection/bin/python
3 讓Linux下的子用戶共享root用戶下的anaconda環境
上面我們已經知道root用戶下,anaconda的很多環境變量都是在root/.bashrc(或~/.bashrc 是同一個文件)
配置文件中定義的,如果要讓子用戶能夠共享到root用戶下的anaconda所有環境(包括虛擬環境),就必須讓子用戶能夠訪問到/root/.bashrc
中定義的anaconda的環境變量,所以我們把/root/.bashrc
拷貝到子用戶的home目錄下,覆蓋子用戶的.bashrc配置文件
。
3.1 拷貝root用戶的.bashrc
配置文件,並覆蓋子用戶/home/自用戶名/.bashrc
配置文件
例如,我想要子用戶shl
可以使用root用戶下的anaconda環境:
1、拷貝root用戶的.bashrc
配置文件,並覆蓋子用戶/home/自用戶名/.bashrc
配置文件
cp /root/.bashrc /home/shl/.bashrc
3.2 讓子用戶可以在root用戶的anaconda下新建虛擬環境
如果要讓子用戶可以在root用戶的anaconda下新建虛擬環境,就必須讓子用戶對anaconda的安裝路徑:/home/anaconda3
有讀寫執行的權利
,因此只要賦予子用戶對/home/anaconda3
權利即可:
例如:賦予用戶shl
對/home/anaconda3
讀寫執行權利:
chown -R shl:shl /home/anaconda3
注意:
以上操作都是在
root用戶
下操作的,否則你沒有權限