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


11

Итак, я нахожусь в моей среде анаконды, и я управлял питоном. я получил

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

Теперь, если я запускаю tmux, затем запускаю source activ env1, то какой Python я получу

/home/comp/anaconda3/bin/python

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

Ответы:


15

Похоже, решение состоит в том, чтобы деактивировать среду conda, затем запустить tmux, а затем снова активировать среду внутри tmux.


2
Странное решение, но работает ...
LYu

Это действительно странно.
ZirconCode

2
Я голосую, потому что это решение сработало для меня, однако это действительно далеко от идеального решения
johnchase

2

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

Когда я впервые делаю внутри сеанса 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указывает на правильный путь.


2

Такое поведение вызвано поиском TMux ~/.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.

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


1

Бег:

conda activate env1

Вместо:

source activate env1

Когда внутри у меня работал tmux.


1

Я считаю, что tmux всегда будет вызывать профиль вашей оболочки, а не только rc. Так что если вы используете bash, как я, он вызовет / etc / profile, который будет вызывать path_helper.

Чтобы это исправить, измените /etc/profileна:

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

Если вы используете Баш, а также изменять любые export PATH=$PATH:/fooв .bashrcк

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

затем вы перезапустите терминал (например, Iterm). Все должно быть хорошо!


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.