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/.bashrcvi ~/.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用戶下操作的,否則你沒有權限

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章