имя virtualenv не отображается в приглашении zsh
недавно я попробую oh my zsh, все выглядит хорошо, пока я не попробую virtualevn и virtualenvwrapper. Когда я активирую virtualenv (e.G test), на обычном bash, я увижу имя virtualenv как:
(test)abc@abc:
но когда я переключился на zsh, я не вижу имя virtualenv. Хотя, я ALR добавить virtualenv и virtualenvwrapper в плагинах oh my zsh. Я также проверил файл активации моего virtualenv, он содержит:
f [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then
_OLD_VIRTUAL_PS1="$PS1"
if [ "x" != x ] ; then
PS1="$PS1"
else
PS1="(`basename "$VIRTUAL_ENV"`) $PS1"
fi
export PS1
fi
- Это потому, что сравнение ["x"!= x] вернуть true?
обновление: Я попытался повторить $PS1 в файле активации и получил следующее:
(test) %{$fg[magenta]%}%n%{$reset_color%}%{$fg[cyan]%}@%{$reset_color%}%{$fg[yellow]%}%m%{$reset_color%}%{$fg[red]%}:%{$reset_color%}%{$fg[cyan]%}%0~%{$reset_color%}%{$fg[red]%}|%{$reset_color%}%{$fg[cyan]%}⇒%{$reset_color%}
кажется, что $PS1 правильный, но когда я Эхо $PS1 в терминале, (тест) ушел. Кажется, $PS1 переопределяется чем-то другим!
5 ответов
лучшим решением является добавление следующего в конец вашего~/.файл zshrc:
export VIRTUAL_ENV_DISABLE_PROMPT=
это переопределит значение в virtualenv.плагин.ЗШ - нет необходимости менять этот файл.
нашел проблему, это связано с темой. Тема, которую я использовал в приведенном выше случае, - Пигмалион, это не позволит u изменить $PS1.
после изменения темы robbyrussell я могу изменить $PS1 в терминале, но все еще не вижу имя virtualenv. Через некоторое время отладки я обнаружил, что по умолчанию плагин virtualenv oh my zsh отключает приглашение:
# disables prompt mangling in virtual_env/bin/activate
export VIRTUAL_ENV_DISABLE_PROMPT=1
поэтому просто прокомментируйте строку в плагине virtualenv, проблема решена.
этого в ~/.zshrc
:
plugins=(virtualenv)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status virtualenv)
предостережения:
1 -- добавьте этот плагин в дополнение к другим плагинам, которые у вас есть.
2 -- я использую тему POWERLEVEL9K. Может быть, вы тема
согласно этому руководству здесь
добавить
virtualenv
зависимость подplugin
в файле.zshrc
Если это не работает для вас, то это означает, что выбранная вами тема(одна из тем oh-my-zsh) не включает имя virtualenv в приглашение bash, поэтому попробуйте второй шаг.выберите файл
~/.oh-my-zsh/themes/YOUR_THEME_NAME.zsh-theme
и добавить в базы приглашения%{$fg[green]%}$(virtualenv_prompt_info)%{$reset_color%}%
Примечание: virtualenv_prompt_info
имя функция, которая объявлена в ~/.oh-my-zsh/plugins/virtualenv/virtualenv.plugin.zsh
. Если ваш файл плагина имеет другое имя функции, измените его соответствующим образом.
или вы можете объявить свою собственную функцию в ~/.zshrc
файл, как показано в этом руководство
если вы используете conda для запуска виртуальной среды, переменная envorionment будет отличаться. Чтобы выяснить имя среды, в которой хранится имя virtaulenv, введите printenv
и в результате. Для меня это CONDA_PROMPT_MODIFIER
после того как вы знаете имя переменной открыть .zshrc и добавьте эту функцию
function virtualenv_info {
[ $CONDA_PROMPT_MODIFIER ] && echo `basename $CONDA_PROMPT_MODIFIER`
}
и под этим добавьте эту строку
PROMPT="%{$fg[green]%}$(virtualenv_info)%{$reset_color%}%${PROMPT}"
закройте редактор и тип source .zshrc