Wie kann ich zwischen Conda und Pyenv hin- und herwechseln, ohne das Terminal neu zu starten?

Wie kann ich zwischen Conda und Pyenv hin- und herwechseln, ohne das Terminal neu zu starten?

Ich verwende sowohl conda als auch pyenv und möchte zwischen beiden wechseln, während ich im selben Terminal bleibe.

Die Einträge zum Initialisieren beider in meiner .bashrc sehen wie folgt aus:

# >>> 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

Und

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

Ich habe einfach versucht, die Initialisierungszeilen (für pyenv) in ein separates Shell-Skript einzufügen, aber das funktioniert nicht (pyenv wird nicht initialisiert).

Info: Pyenv ist eine weitere virtuelle Python-Umgebung, die ich für die Verwendung in Kombination mit Poesie benötige

Antwort1

Ich scheine zumindest einen Workaround gefunden zu haben. Es scheint, dass das Deaktivieren von pyenv, sobald es aktiviert ist, schwierig ist, also definiere ich stattdessen eine Init-Funktion in meiner .bashrc, wie hier vorgeschlagenPost

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 -)"
}

Dann aktiviere ich einfach pyenv bei Bedarf in jeder Shell. Beachten Sie, dass das von mir ausprobierte Bash-Skript nicht funktionierte (wahrscheinlich, weil es eine separate Shell-Sitzung öffnet).

verwandte Informationen