首页 > 解决方案 > 如何在 .bashrc 中将别名功能与 conda 初始化相结合

问题描述

我需要在 .bashrc 中组合两个不同的部分我的目的是在尝试初始化 conda 之前将 PYTHONPATH 初始化为空。

在 .bashrc 中有 conda 初始化部分。

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/me/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
  eval "$__conda_setup"
else
  if [ -f "/home/me/anaconda3/etc/profile.d/conda.sh" ]; then
    . "/home/me/anaconda3/etc/profile.d/conda.sh"
  else
    export PATH="/home/me/anaconda3/bin:$PATH"
  fi
fi
unset __conda_setup
# <<< conda initialize <<<

但是,我在使用默认 PYTHONPATH 时遇到了问题,因为除非我想使用 conda,否则我无法触及这个默认值。所以,我创建了 conda() 别名。但它与使用 conda 初始化部分发生冲突。

错误消息如下所示。

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.

这意味着未执行 conda 初始化。

这是康达()。

state=true
conda() {
  if $state; then
    state=false
    PYTHONPATH=''
    command conda "$@"
  else
    command conda "$@"
  fi
}

.basrh 的行为应该类似于我尝试在命令行上使用 conda 语句,仅在 conda 初始化工作之前第一次清除 PYTHONPATH。如果我不尝试使用 conda 语句,PYTHONPATH 应该是不可触及的。

标签: bashfunctionanacondaaliasconda

解决方案


我不确定我是否了解正在发生的事情或您正在尝试做的事情,但这是您可以尝试的:

savePYTHONPATH=PYTHONPATH
PYTHONPATH=''

# the conda initialize section should go here

PYTHONPATH=$savePYTHONPATH

然后你就可以使用你的conda功能了。

如果这不起作用,那么它仍然应该为您提供一些关于如何进行的想法。

请注意,一旦您的conda函数运行,PYTHONPATH即使在stateis之后也将保持为空,false除非其他东西将其设置为非空值。所以我不太确定条件的目的是什么。


推荐阅读