LINUX.ORG.RU

История изменений

Исправление FishHook, (текущая версия) :

Есть еще poetry, а еще сейчас набегут и скажут всё гавно, юзайте nix. Нет ответа на этот ваш вопрос, есть альтернативы. Мой личный опыт за анаконду, как наиболее безфакапный способ изоляции питона. Могу поделиться маленьким лайфхаком

_pwd_in_code_home(){
    test "${PWD#$CODE_HOME}" != "${PWD}"
    return $?
}

_activate_conda_on_chpwd() {
   _pwd_in_code_home
   if [[ $? != "0" ]]; then
     return
   fi
   local ACTIVE_ENV=$CONDA_DEFAULT_ENV
   local NEW_ENV=`echo ${PWD#$CODE_HOME} | tr -d "/"`
   if test -z $NEW_ENV; then
      return
   fi
   if [[ $ACTIVE_ENV == $NEW_ENV ]]; then
     return
   fi
   conda activate $NEW_ENV 2> /dev/null
   if [[ $? == "0" ]]; then
      echo Activating conda enviroment  $NEW_ENV
   fi
}

if [[ -v CODE_HOME ]]; then
    autoload -U add-zsh-hook
    add-zsh-hook chpwd _activate_conda_on_chpwd
fi

если это добавить в .zshrc то конда будет автоматически переключаться на соответствующий environment при смене каталога

Исходная версия FishHook, :

Есть еще poetry, а еще сейчас набегут и скажут всё гавно, юзайте nix. Нет ответа на этот ваш вопрос, есть альтернативы. Мой личный опыт за анаконду, как наиболее безфакапный способ изоляции питона. Могу поделиться маленьким лайфхаком

_pwd_in_code_home(){
    test "${PWD##$CODE_HOME}" != "${PWD}"
    return $?
}

_activate_conda_on_chpwd() {
   _pwd_in_code_home
   if [[ $? != "0" ]]; then
     return
   fi
   local ACTIVE_ENV=$CONDA_DEFAULT_ENV
   local NEW_ENV=`echo ${PWD#$CODE_HOME} | tr -d "/"`
   if test -z $NEW_ENV; then
      return
   fi
   if [[ $ACTIVE_ENV == $NEW_ENV ]]; then
     return
   fi
   conda activate $NEW_ENV 2> /dev/null
   if [[ $? == "0" ]]; then
      echo Activating conda enviroment  $NEW_ENV
   fi
}

if [[ -v CODE_HOME ]]; then
    autoload -U add-zsh-hook
    add-zsh-hook chpwd _activate_conda_on_chpwd
fi

если это добавить в .zshrc то конда будет автоматически переключаться на соответствующий environment при смене каталога