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/zsh
in meiner Antwort durch Ihren eigenen Shell-Pfad.
set -g default-command "/bin/zsh"
Sobald dies erledigt ist, müssen Sie nur noch Ihre .tmux.conf
Datei als Ressource verwenden und die Änderungen sollten aktiviert werden. Dadurch sollten tmux
alle Einstellungen geladen werden können, die Sie in Ihrem .bash_profile
Conda haben.
Antwort3
Dieses Verhalten wird durch TMux-Sourcing ~/.profile
anstelle von verursacht ~/.bashrc
. Meins ~/.profile
ist 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 ~/.bashrc
wird bezogen undDann ~/bin
und ~/.local/bin
sindvorangestellt.Wie ich selbst erlebt habe, dies führt conda
zu 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 python
Zeigt auf den richtigen Pfad.