O tmux está fazendo com que o anaconda use uma fonte python diferente


11

Ok, estou no meu ambiente anaconda e executei qual python. eu recebo

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

Agora, se eu iniciar o tmux, execute o source activ env1 e qual o python que recebo

/home/comp/anaconda3/bin/python

mesmo tendo meu ambiente ativado. Como posso fazer o anaconda ver o mesmo caminho dentro do tmux?

Respostas:


15

A solução parece ser desativar o ambiente conda, iniciar o tmux e reativar o ambiente dentro do tmux.


2
Solução estranha, mas funciona ...
LYu 16/10

Isso é realmente estranho.
ZirconCode

2
Estou upvoting porque esta é a solução que funcionou para mim, no entanto, é realmente um longe de uma solução ideal
johnchase

2

O seguinte acontece depois de iniciar uma sessão do Tmux (sem o conda ter nenhum ambiente ativo).

Quando eu faço pela primeira vez dentro da sessão do Tmux:

conda activate myEnv

eu recebo

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, em vez disso, eu faço:

source deactivate
conda activate myEnv

Tudo funciona muito bem. which pythonaponta para o caminho correto.


2

Esse comportamento é causado pelo fornecimento do TMux em ~/.profilevez de ~/.bashrc. Meu ~/.profileé este:

# 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

Você pode ver que primeiro ~/.bashrc é originária e , em seguida, ~/bin e ~/.local/binsão prefixado . Como eu me experimentei , isso causa condahickup.

A solução seria comentar os dois blocos que manipulam o PATH ~/.profile.

Edit (2019/09/24): Parece ainda melhor configurar o TMux para que ele não crie um shell de login, mas apenas um shell normal. Veja as respostas para a pergunta vinculada.


1

Corrida:

conda activate env1

Ao invés de:

source activate env1

Quando dentro o tmux funcionou para mim.


1

Acho que o tmux sempre chamará o perfil para o seu shell, não apenas o rc. Portanto, se você estiver usando o bash como eu, ele chamará / etc / profile, que terá uma chamada para path_helper.

Para corrigir isso, mude /etc/profilepara:

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

Se você estiver usando bash, também alterar qualquer export PATH=$PATH:/fooem .bashrcque

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

depois você reinicia o terminal (por exemplo, Iterm). Tudo deve estar bem!


0
nano ~/.bash_profile

Adicione as seguintes linhas:

source deactivate env1
source activate env1

trabalhou para mim.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.