解決AWS AMI機器學(xué)習(xí)服務(wù)器conda環(huán)境激活問題

作者:Jack Wu

現(xiàn)象

AWS Ubuntu AMI機器學(xué)習(xí)服務(wù)器無法自動激動 conda 的 tensorflow 環(huán)境問題。如我們想自動活動tensorflow_p36,在conda的提示下,于是在.bashrc中追加如下配置:

. /home/ubuntu/anaconda3/etc/profile.d/conda.sh
conda activate tensorflow_p36

但登錄后發(fā)現(xiàn)使用的Python仍然是conda base的Python:

(tensorflow_p36) ubuntu@ip:~$ which python
which python
/home/ubuntu/anaconda3/bin/python

原因

當(dāng)?shù)卿浕騮mux或bash嵌套時,腳本調(diào)用順序.profile -> .bashrc。而.profile的內(nèi)容如下。

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi
# for private env
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
export PATH="/home/ubuntu/anaconda3/bin:$PATH"

可以發(fā)現(xiàn),其最后兩行的環(huán)境變量配置,覆蓋了conda activate tensorflow_p36生成的環(huán)境變量,通過env查看PATH可看到,

PATH=/home/ubuntu/bin:/home/ubuntu/.local/bin:/home/ubuntu/anaconda3/bin/:/home/ubuntu/anaconda3/envs/tensorflow_p36/bin:/home/ubuntu/bin:/home/ubuntu/.local/bin:/home/ubuntu/anaconda3/bin/:/usr/local/cuda/bin:/usr/local/bin ...

而這時我們已經(jīng)在tensorflow_p36環(huán)境中,再運行conda activate tensorflow_p36也無效果。臨時的解決方法是先deactivate再激活tensorflow_p36,以再覆蓋一次環(huán)境變量PATH。

conda deactivate
conda activate tensorflow_p36
PATH=/home/ubuntu/anaconda3/envs/tensorflow_p36/bin:/home/ubuntu/bin:/home/ubuntu/.local/bin:/home/ubuntu/anaconda3/bin/:/home/ubuntu/anaconda3/envs/tensorflow_p36/bin:/home/ubuntu/bin:/home/ubuntu/.local/bin:/home/ubuntu/anaconda3/bin/:/usr/local/cuda/bin:/usr/local/bin ...

如何分析出如上的原因呢,可以在.bashrc頭加上set -x,使bash打印每次運行的腳本的第一行信息:

#Source .dlamirc in .bashrc
set -x
source ~/.dlamirc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
...

解決

從上面可以看出,比較偷懶的解決方法是,修改.bashrc中的 tensorflow_p36 激活腳本為如下:

. /home/ubuntu/anaconda3/etc/profile.d/conda.sh
conda deactivate
conda activate tensorflow_p36
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容