tmux sta facendo sì che anaconda usi una diversa fonte di Python


11

Ok, quindi sono nel mio ambiente di anaconda e ho eseguito quale pitone. ottengo

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

Ora se avvio tmux, eseguo source activ env1, quindi quale pitone ottengo

/home/comp/anaconda3/bin/python

anche se ho attivato il mio ambiente. Come posso fare in modo che anaconda veda lo stesso percorso all'interno di tmux?

Risposte:


15

La soluzione sembra essere quella di disattivare l'ambiente conda, quindi avviare tmux, quindi riattivare l'ambiente all'interno di tmux.


2
Strana

È davvero strano.
Zircon,

2
Sto votando perché questa è la soluzione che ha funzionato per me, tuttavia è davvero una soluzione tutt'altro che ideale
johnchase

2

Mi viene in mente dopo aver avviato una sessione di Tmux (senza che conda abbia un ambiente attivo).

La prima volta che faccio all'interno della sessione di Tmux:

conda activate myEnv

ottengo

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

Se invece lo faccio:

source deactivate
conda activate myEnv

Tutto funziona bene. which pythonindica il percorso corretto.


2

Questo comportamento è causato dall'approvvigionamento di TMux ~/.profileanziché ~/.bashrc. Il mio ~/.profileè questo:

# 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

Puoi vedere che prima ~/.bashrc proviene e poi ~/bin e ~/.local/binviene anteposto . Come ho sperimentato me stesso , questo provoca il condasinghiozzo.

La soluzione sarebbe quella di commentare i due blocchi manipolando PATH ~/.profile.

Modifica (2019/09/24): sembra ancora meglio configurare TMux in modo tale da non generare una shell di accesso ma solo una normale. Vedi le risposte per la domanda collegata.


1

In esecuzione:

conda activate env1

Invece di:

source activate env1

Quando dentro tmux ha funzionato per me.


1

Trovo che tmux chiamerà sempre il profilo per la tua shell, non solo l'rc. Quindi se stai usando bash come faccio io, chiamerà / etc / profile, che avrà una chiamata a path_helper.

Per risolvere questo problema, cambia /etc/profilein:

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

Se stai usando bash, cambia anche qualsiasi export PATH=$PATH:/fooin .bashrcin

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

quindi riavvii il terminale (ad esempio Iterm). Tutto dovrebbe andare bene!


0
nano ~/.bash_profile

Aggiungi le seguenti righe:

source deactivate env1
source activate env1

ha funzionato per me.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.