tmux заставляет anaconda использовать другой исходный код python

tmux заставляет anaconda использовать другой исходный код python

Хорошо, я в своей среде anaconda и запустил which python. Я получаю

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

Теперь, если я запущу tmux, затем запущу source activate env1, затем which python, я получу

/home/comp/anaconda3/bin/python

хотя у меня активирована моя среда. Как заставить anaconda увидеть тот же путь внутри tmux?

решение1

Решение, по-видимому, заключается в деактивации среды conda, затем запуске tmux, а затем повторной активации среды внутри tmux.

решение2

У меня была та же проблема, но мне не понравилось ни одно из решений, так как они включали деактивацию и активацию Conda каждый раз, когда я загружаюсь в tmux. Поэтому вместо этого я добавил то, что ниже, в свой .tmux.conf:

ВАЖНОЕ ПРАВКА: Этот код работает для меня, так как я сейчас использую оболочку zsh, и именно здесь хранятся мои настройки. Ваша стандартная оболочка может отличаться, чтобы найти местоположение вашей оболочки, используйте команду echo "$SHELL"и замените /bin/zshв моем ответе на свой собственный путь к оболочке.

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

После этого просто загрузите ваш .tmux.confфайл и изменения должны быть активированы. Это должно позволить tmuxзагрузить любые настройки, которые у вас есть в вашем .bash_profileConda.

решение3

Это поведение вызвано TMux sourcing ~/.profileвместо ~/.bashrc. У меня ~/.profileэто:

# 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

Ты это видишьпервый ~/.bashrcполучен изатем ~/binи ~/.local/binестьдобавленный.Как я испытал на себе, это приводит condaк икоте.

Решением было бы закомментировать два блока, управляющих PATH в ~/.profile.

Редактировать (24.09.2019):Еще лучше, кажется, настроить TMux так, чтобы он не создавал оболочку входа, а просто обычную. Смотрите ответы на связанный вопрос.

решение4

Следующее происходит со мной после запуска сеанса Tmux (без conda, имеющего активную среду).

Когда я впервые делаю это в сеансе Tmux:

conda activate myEnv

я получил

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

Если вместо этого я сделаю:

source deactivate
conda activate myEnv

Все работает отлично. which pythonУказывает на правильный путь.

Связанный контент