tmux veranlasst anaconda, eine andere Python-Quelle zu verwenden


9

Ok, ich bin in meiner Anaconda-Umgebung und habe welche Python ausgeführt. Ich bekomme

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

Wenn ich nun tmux starte, dann starte aktiviere env1 und dann welche Python bekomme ich

/home/comp/anaconda3/bin/python

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

Antworten:


15

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


2
Seltsame Lösung, funktioniert aber ...
LYu

Das ist wirklich komisch.
ZirconCode

1
Ich stimme zu, weil dies die Lösung ist, die für mich funktioniert hat, aber es ist wirklich keine ideale Lösung
Johnchase

2

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

# 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 , dass erste ~/.bashrc bezogen ist und dann ~/bin und ~/.local/binwerden vorangestellt . Wie ich selbst erlebt habe , führt dies condazu einem Hickup.

Die Lösung wäre, die beiden Blöcke zu kommentieren, in denen PATH manipuliert wird ~/.profile.

Bearbeiten (24.09.2019): Noch besser scheint es zu sein, TMux so zu konfigurieren, dass keine Login-Shell, sondern nur eine normale erzeugt wird. Siehe die Antworten für die verknüpfte Frage.


1

Laufen:

conda activate env1

Anstatt:

source activate env1

Als ich drinnen war, arbeitete tmux für mich.


1

Folgendes passiert mir nach dem Start einer Tmux-Sitzung (ohne dass conda eine aktive Umgebung hat).

Wenn ich es zum ersten Mal in 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:

source deactivate
conda activate myEnv

Alles funktioniert gut. which pythonzeigt auf den richtigen Pfad.


1

Ich finde, dass tmux immer das Profil für Ihre Shell aufruft, nicht nur das rc. Wenn Sie also wie ich bash verwenden, wird / etc / profile aufgerufen, wodurch path_helper aufgerufen wird.

Um dies zu beheben, wechseln Sie /etc/profilezu:

if [[ -z $TMUX ]] && [ -x /usr/libexec/path_helper ]; then
        eval `/usr/libexec/path_helper -s`
fi

Wenn Sie bash verwenden, ändern auch alle export PATH=$PATH:/fooin .bashrczu

if [[ -z $TMUX ]]; then
  export PATH=$PATH:/foo
fi

Dann starten Sie das Terminal neu (zum Beispiel Iterm). Alles sollte gut sein!


0
nano ~/.bash_profile

Fügen Sie die folgenden Zeilen hinzu:

source deactivate env1
source activate env1

arbeitete für mich.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.