tmux powoduje, że anakonda używa innego źródła python


11

Ok, więc jestem w środowisku anakondy i uruchomiłem który python. dostaję

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

Teraz, jeśli uruchomię Tmux, a następnie uruchom źródło aktywuj env1, a następnie python, który otrzymuję

/home/comp/anaconda3/bin/python

mimo że mam aktywowane moje środowisko. Jak sprawić, by anakonda widziała tę samą ścieżkę w tmuxie?

Odpowiedzi:


15

Rozwiązaniem wydaje się być dezaktywacja środowiska conda, następnie uruchomienie tmux, a następnie reaktywacja środowiska wewnątrz tmux.


2
Dziwne rozwiązanie, ale działa ...
LYu

To naprawdę dziwne.
ZirconCode

2
Jestem entuzjastycznie nastawiony, ponieważ jest to rozwiązanie, które zadziałało dla mnie, ale tak naprawdę jest to dalekie od idealnego rozwiązania
johnchase

2

Po rozpoczęciu sesji Tmux przydarza mi się (bez conda z aktywną env).

Kiedy pierwszy raz robię w sesji Tmux:

conda activate myEnv

dostaję

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'.

Jeśli zamiast tego:

source deactivate
conda activate myEnv

Wszystko działa dobrze. which pythonwskazuje prawidłową ścieżkę.


2

Takie zachowanie jest spowodowane przez pozyskiwanie TMux ~/.profilezamiast ~/.bashrc. Moje ~/.profilejest to:

# 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

Widać, że pierwszy ~/.bashrc jest pozyskiwane, a potem ~/bin i ~/.local/binpoprzedzany . Jak samconda się przekonałem , powoduje to czkawkę.

Rozwiązaniem byłoby skomentowanie dwóch bloków manipulujących PATH ~/.profile.

Edycja (2019/09/24): Wydaje się, że jeszcze lepszym rozwiązaniem jest skonfigurowanie TMux tak, aby nie spawnował powłoki logowania, ale tylko normalną. Zobacz odpowiedzi na powiązane pytanie.


1

Bieganie:

conda activate env1

Zamiast:

source activate env1

W środku Tmux pracował dla mnie.


1

Uważam, że tmux zawsze wywoła profil dla twojej powłoki, nie tylko rc. Więc jeśli używasz bash tak jak ja, to wywoła / etc / profile, który będzie miał wywołanie path_helper.

Aby to naprawić, zmień /etc/profilena:

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

Jeśli używasz bash, również zmienić każdy export PATH=$PATH:/foow .bashrccelu

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

następnie ponownie uruchom terminal (na przykład Iterm). Wszystko powinno być dobrze!


0
nano ~/.bash_profile

Dodaj następujące wiersze:

source deactivate env1
source activate env1

pracował dla mnie.


0

Miałem ten sam problem, ale naprawdę nie podobało mi się żadne z rozwiązań, ponieważ dotyczyły one dezaktywacji i aktywacji Condy za każdym razem, gdy ładuję do Tmux. Zamiast tego dodałem to, co poniżej .tmux.conf:

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

Po zakończeniu po prostu zasób swój plik .tmux.conf, a zmiany powinny zostać aktywowane. Powinno to pozwolić Tmuxowi załadować dowolne ustawienia, w .bash_profiletym Condę.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.