ターミナルを再起動せずに 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 は、詩と組み合わせて使用​​するために必要なもう 1 つの仮想 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 スクリプトは動作しなかったことに注意してください (おそらく別のシェル セッションを開くためです)。

関連情報