如今,使用PYTHON作为开发语言时,或多或少都会使用到conda
。安装Annaconda
时一般都会选择在启动终端时进入conda
的base
环境。该操作,实际上是在~/.bashrc
中添加如下脚本:
bash
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/u20/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/home/u20/anaconda3/etc/profile.d/conda.sh" ]; then
. "/home/u20/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/home/u20/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
该段代码被执行后,会在PATH
环境变量中添加conda
所在路径,即:
bash
env
CONDA_EXE=/home/u20/anaconda3/bin/conda
PWD=/home/u20
GSETTINGS_SCHEMA_DIR=/home/u20/anaconda3/share/glib-2.0/schemas
CONDA_PREFIX=/home/u20/anaconda3
GSETTINGS_SCHEMA_DIR_CONDA_BACKUP=
...
PATH=/home/u20/anaconda3/bin:/home/u20/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
因此,解决方法是:
- 在遇到冲突时,屏蔽在安装时添加的脚本
- 在正常使用时,恢复在安装时添加的脚本
打开~/.bashrc
并在尾部添加如下内容:
bash
# 用于开启与关闭CONDA,关闭后需要打开新的终端才能屏蔽CONDA
alias conda_on='f=~/.bashrc;lines=$(sed -n "/conda initialize/=" ${f});lines=${lines//[[:space:]]/,};lines=${lines%,*};lines=${lines%,*};sed -i "${lines}s/^#//g" ${f};source ${f}'
alias conda_ff='f=~/.bashrc;lines=$(sed -n "/conda initialize/=" ${f});lines=${lines//[[:space:]]/,};lines=${lines%,*};lines=${lines%,*};sed -i "${lines}s/^/#/g" ${f};source ${f}'
需要屏蔽conda
导致的库冲突时,执行conda_ff
命令。查看此时的~/.bashrc
可以看到安装Annaconda
时添加的脚本已被注释。
需要使用conda
时,执行conda_on
命令。查看此时的~/.bashrc
可以看到安装Annaconda
时添加的脚本已恢复。
注意:
关闭后需要打开新的终端才能屏蔽CONDA