tmux bewirkt, dass Anaconda eine andere Python-Quelle verwendet

tmux bewirkt, dass Anaconda eine andere Python-Quelle verwendet

Ok, ich bin also in meiner Anaconda-Umgebung und habe which python ausgeführt. Ich bekomme

/home/comp/anaconda3/envs/env1/bin/python

Wenn ich jetzt tmux starte, dann source activate env1 ausführe und dann which python ausführe, bekomme ich

/home/comp/anaconda3/bin/python

obwohl ich meine Umgebung aktiviert habe. Wie kann ich Anaconda dazu bringen, denselben Pfad in tmux anzuzeigen?

Antwort1

Die Lösung scheint darin zu bestehen, die Conda-Umgebung zu deaktivieren, dann tmux zu starten und dann die Umgebung innerhalb von tmux wieder zu aktivieren.

Antwort2

Ich hatte das gleiche Problem, aber keine der Lösungen gefiel mir wirklich, da sie das Deaktivieren und Aktivieren von Conda bei jedem Laden in erforderten tmux. Also habe ich stattdessen Folgendes zu meinem hinzugefügt .tmux.conf:

WICHTIGE BEARBEITUNG: Dieser Code funktioniert bei mir, da ich derzeit eine ZSH-Shell verwende und dort meine Einstellungen gespeichert sind. Ihre Standard-Shell ist möglicherweise anders. Um Ihren Shell-Speicherort zu finden, verwenden Sie den Befehl echo "$SHELL"und ersetzen Sie das /bin/zshin meiner Antwort durch Ihren eigenen Shell-Pfad.

set -g default-command "/bin/zsh"

Sobald dies erledigt ist, müssen Sie nur noch Ihre .tmux.confDatei als Ressource verwenden und die Änderungen sollten aktiviert werden. Dadurch sollten tmuxalle Einstellungen geladen werden können, die Sie in Ihrem .bash_profileConda haben.

Antwort3

Dieses Verhalten wird durch TMux-Sourcing ~/.profileanstelle von verursacht ~/.bashrc. Meins ~/.profileist dies:

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi

Sie können sehen, dassErste ~/.bashrcwird bezogen undDann ~/binund ~/.local/binsindvorangestellt.Wie ich selbst erlebt habe, dies führt condazu einem Schluckauf.

Die Lösung wäre, die beiden Blöcke, die PATH manipulieren, auszukommentieren ~/.profile.

Bearbeiten (24.09.2019):Noch besser scheint es zu sein, TMux so zu konfigurieren, dass es keine Login-Shell, sondern nur eine normale öffnet. Siehe die Antworten auf die verlinkte Frage.

Antwort4

Folgendes passiert mir nach dem Starten einer Tmux-Sitzung (ohne dass Conda über eine aktive Umgebung verfügt).

Wenn ich das zum ersten Mal innerhalb der Tmux-Sitzung mache:

conda activate myEnv

Ich bekomme

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run

    $ conda init <SHELL_NAME>

Currently supported shells are:
  - bash
  - fish
  - tcsh
  - xonsh
  - zsh
  - powershell

See 'conda init --help' for more information and options.

IMPORTANT: You may need to close and restart your shell after running 'conda init'.

Wenn ich stattdessen Folgendes tue:

source deactivate
conda activate myEnv

Alles funktioniert einwandfrei. which pythonZeigt auf den richtigen Pfad.

verwandte Informationen