Как переключаться между Conda и Pyenv без перезапуска терминала?

Как переключаться между Conda и Pyenv без перезапуска терминала?

Я использую conda и pyenv и хотел бы переключаться между ними, оставаясь в одном терминале.

Записи для инициализации обоих в моем .bashrc выглядят следующим образом:

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

и

# Pyenv initialize
export PATH="/home/myUser/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

Я просто попытался поместить строки инициализации (для pyenv) в отдельный скрипт оболочки, однако это не сработало (pyenv не инициализируется).

Информация: Pyenv — это еще одна виртуальная среда Python, которая мне нужна для использования в сочетании с поэзией.

решение1

Кажется, я нашел по крайней мере обходной путь. Кажется, что деактивация pyenv после его активации — сложная задача, поэтому вместо этого я определяю функцию init в моем .bashrc, как предлагается в этомпочта

enable-pyenv () {
    # Load pyenv automatically by adding
    # the following to your profile:

    export PATH="$HOME/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
}

Затем я просто активирую pyenv в каждой оболочке по требованию. Обратите внимание, что скрипт bash, который я пробовал, не работал (вероятно, потому что он открывает отдельную сессию оболочки).

Связанный контент