tmux oblige anaconda à utiliser une source python différente

11

Ok, donc je suis dans mon environnement anaconda et j'ai couru quel python. Je reçois

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

Maintenant, si je démarre tmux, puis exécute source activate env1, puis quel python, j'obtiens

/home/comp/anaconda3/bin/python

même si mon environnement est activé. Comment puis-je faire anaconda voir le même chemin à l'intérieur de tmux?

leniX
la source

Réponses:

15

La solution semble être de désactiver l'environnement conda, puis de démarrer tmux, puis de réactiver l'environnement à l'intérieur de tmux.

leniX
la source
2
Une solution bizarre mais qui fonctionne ...
LYu
C'est vraiment bizarre.
ZirconCode
2
Je vote positivement parce que c'est la solution qui a fonctionné pour moi, mais c'est vraiment loin d'être la solution idéale
johnchase
2

Ce qui m'arrive après avoir commencé une session Tmux (sans conda ayant un env actif).

Quand je fais pour la première fois à l'intérieur de la session Tmux:

conda activate myEnv

Je reçois

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

Si au contraire je le fais:

source deactivate
conda activate myEnv

Tout fonctionne très bien. which pythonpointe vers le bon chemin.

jose.marcos.rf
la source
2

Ce problème est provoqué par l'approvisionnement TMux ~/.profileau lieu de ~/.bashrc. Mon ~/.profileest ceci:

# 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

Vous pouvez voir que la première ~/.bashrc provient et ensuite ~/bin et ~/.local/binsont préfixés . Comme je l'ai vécu moi - même , cela provoque condades hickups.

La solution serait de commenter les deux blocs manipulant PATH dans ~/.profile.

Edit (2019/09/24): Une meilleure solution semble être de configurer TMux de sorte qu'il ne génère pas un shell de connexion mais juste un shell normal. Voir les réponses pour la question liée.

Max Görner
la source
1

Fonctionnement:

conda activate env1

Au lieu de:

source activate env1

Lorsque l'intérieur de tmux a fonctionné pour moi.

pedrodcb
la source
1

Je trouve que tmux appellera toujours le profil de votre shell, pas seulement le rc. Donc, si vous utilisez bash comme moi, il appellera / etc / profile, qui appellera path_helper.

Pour résoudre ce problème, passez /etc/profileà:

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

Si vous utilisez bash, changer aussi tout export PATH=$PATH:/foodans .bashrcla

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

puis vous redémarrez le terminal (par exemple Iterm). Tout devrait être bon!

H.Li
la source
0
nano ~/.bash_profile

Ajoutez les lignes suivantes:

source deactivate env1
source activate env1

travaillé pour moi.

Kensuke NAKAMURA
la source