터미널을 다시 시작하지 않고 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를 비활성화하는 것은 어려운 일인 것 같습니다. 대신에 제안된 대로 .bashrc에 init 함수를 정의합니다.우편

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 스크립트는 작동하지 않았습니다(아마 별도의 쉘 세션을 열었기 때문일 것입니다).

관련 정보