tmux змушує анаконду використовувати інше джерело пітона


11

Гаразд, значить, я перебуваю в анакондовому середовищі, і я побіг який пітон. я отримав

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

Тепер, якщо я запускаю tmux, тоді запускаю джерело activate env1, то який python я отримую

/home/comp/anaconda3/bin/python

навіть якщо в мене активоване середовище. Як я можу змусити анаконда бачити той самий шлях у tmux?

Відповіді:


15

Здається, рішення полягає в тому, щоб дезактивувати середовище conda, потім запустити tmux, а потім знову активувати середовище всередині tmux.


2
Дивне рішення, але працює ...
ЛЮ

Це справді дивно.
ZirconCode

2
Я підтримую заявку, тому що це рішення, яке працювало для мене, однак воно дійсно далеко від ідеального рішення
Johnchase

2

Наступне трапляється зі мною після початку сеансу 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вказує на правильний шлях.


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). Все повинно бути добре!



0

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

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

Після завершення просто виправте файл .tmux.conf і зміни слід активувати. Це повинно дозволити tmux завантажувати будь-які налаштування у вашому, .bash_profileвключаючи Conda.


Будь ласка, не вважайте, що його оболонка є zsh(він не згадує про це). Якщо люди без цього використовують вашу відповідь, у них можуть виникнути проблеми. Можливо, вам слід також трохи пояснити, чому це вирішує проблему, як, наприклад, що -gтам, що робить значення за замовчуванням тощо?
Zip
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.