nano ~/.bash_profile
Добавьте следующие строки:
source deactivate env1
source activate env1
сработало для меня.
Работает:
conda activate env1
Вместо:
source activate env1
Когда внутри у меня работал tmux.
Следующее происходит со мной после запуска сеанса 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
указывает на правильный путь.
Такое поведение вызвано использованием 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
.
Изменить (24/09/2019):Кажется, еще лучше настроить TMux так, чтобы он не порождал оболочку входа, а только обычную. См. ответы на связанный вопрос.
Я обнаружил, что tmux всегда вызывает профиль вашей оболочки, а не только rc. Поэтому, если вы используете bash, как я, он вызовет /etc/profile, который будет иметь вызов помощника по пути _.
Чтобы исправить это, измените /etc/profile
на :
if [[ -z $TMUX ]] && [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
Если вы используете bash, также измените любой export PATH=$PATH:/foo
в .bashrc
на
if [[ -z $TMUX ]]; then
export PATH=$PATH:/foo
fi
, затем вы перезапускаете терминал (, например Iterm ). Все должно быть хорошо!
У меня была та же проблема, но мне действительно не нравилось ни одно из решений, поскольку они включали деактивацию и активацию Conda каждый раз, когда я загружаюсь в tmux
. Поэтому вместо этого я добавил то, что ниже, к моему.tmux.conf
:
ВАЖНОЕ РЕДАКТИРОВАНИЕ :Этот код работает для меня, так как в настоящее время я запускаю оболочку zsh, и именно здесь хранятся мои настройки. Ваша стандартная оболочка может отличаться, чтобы найти местоположение вашей оболочки, используйте команду echo "$SHELL"
и замените /bin/zsh
в моем ответе на свой собственный путь к оболочке.
set -g default-command "/bin/zsh"
Когда все будет готово, просто загрузите файл .tmux.conf
, и изменения должны быть активированы. Это должно позволить tmux
загрузить любые настройки, которые у вас есть в вашем .bash_profile
, включая Conda.
При запуске conda activate
раньше мне сообщали «CommandNotFoundError :Ваша оболочка не была должным образом настроена для использования «активации conda». Чтобы инициализировать вашу оболочку, запустите...'
Исправлением для меня стало упрощение ответа @jose.marcos.rf (Мне не хватает прав на комментирование ).
Все, что было нужно, это получить файл conda.sh
из моего файла .bash_profile
. В моем профиле.bash _у меня есть следующее:
if [[ ! -z $TMUX ]]; then
# Enable `conda activate` and such within Tmux
. "/usr/local/anaconda3/etc/profile.d/conda.sh"
fi
Затем открытие нового сеанса Tmux и запуск conda activate
работает должным образом.
Вам нужно отключить tmux из порождающей оболочки входа в систему, как описано в tmux заставляет анаконду использовать другой источник Python