![tmux заставляет anaconda использовать другой исходный код python](https://rvso.com/image/112014/tmux%20%D0%B7%D0%B0%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5%D1%82%20anaconda%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D0%B4%D1%80%D1%83%D0%B3%D0%BE%D0%B9%20%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D1%8B%D0%B9%20%D0%BA%D0%BE%D0%B4%20python.png)
Хорошо, я в своей среде 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_profile
Conda.
решение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
Указывает на правильный путь.