PROMPT_COMMANDを使用すると、Python venvモジュールはPS1に仮想環境名を追加できませんか?

PROMPT_COMMANDを使用すると、Python venvモジュールはPS1に仮想環境名を追加できませんか?

私は公式のGit Bashプロンプトサポートを使用して、プロンプトの一部として現在のブランチを表示します。

python -m venv <dir>私の問題は、()を使用してPython仮想環境を有効にすると、Bashプロンプトの一部としてsource bin/activate仮想環境名が表示されないことです。(atlassian-watchdog)

nlykkei:~/projects/atlassian-watchdog (master *)$

inの代わりにwithを使用しているPROMPT_COMMANDので失敗しているという感じが強くなります。~/.bashrcPS1GIT_PS1_SHOWCOLORHINTSPROMPT_COMMAND

PROMPT_COMMANDアクティブ化時にプロンプ​​トに環境名を追加するためにPython仮想環境を使用する方法はありますか?

~/.git-prompt.sh:

# If you would like a colored hint about the current dirty state, set
# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
# the colored output of "git status -sb" and are available only when
# using __git_ps1 for PROMPT_COMMAND or precmd.

ごみ箱/活性化:

if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
    _OLD_VIRTUAL_PS1="${PS1:-}"
    if [ "x(atlassian-watchdog) " != x ] ; then
       PS1="(atlassian-watchdog) ${PS1:-}"
    else
    if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
        # special case for Aspen magic directories
        # see http://www.zetadev.com/software/aspen/
        PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
    else
        PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
    fi
    fi
    export PS1
fi

~/.bashrc:

# git prompt
source ~/.git-prompt.sh
GIT_PS1_SHOWCOLORHINTS=1
PROMPT_COMMAND='__git_ps1 "\u:\w" "\\\$ "'

ベストアンサー1

解決策はの関連部分をbin/activate組み合わせることです~/git-prompt.sh

仮想環境を含むように最初の引数をラップして変更する関数です__git_ps1_venv()__git_ps1()__git_ps1()

このPS1変数はプロンプト形式に設定する必要があります。

~/.bashrc:

##################
# Prompt
##################

__git_ps1_venv() {
   local pre="$1"
   local post="$2"

   if [ -n "${VIRTUAL_ENV}" ] && [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ]; then
      if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
         # special case for Aspen magic directories
         # see http://www.zetadev.com/software/aspen/
         pre="[`basename \`dirname \"$VIRTUAL_ENV\"\``] ${pre}"
      else
         pre="(`basename \"$VIRTUAL_ENV\"`) ${pre}"
      fi
   fi

   __git_ps1 "${pre}" "${post}"
}

PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '

if [[ -r ~/.git-prompt.sh ]]; then
   . ~/.git-prompt.sh

   GIT_PS1_SHOWCOLORHINTS=1
   GIT_PS1_SHOWDIRTYSTATE=1
   GIT_PS1_SHOWSTASHSTATE=1
   GIT_PS1_SHOWUNTRACKEDFILES=1
   GIT_PS1_SHOWUPSTREAM="verbose name"

   PROMPT_COMMAND='__git_ps1_venv "'"${PS1%\\\$ }"'" "\\\$ "'
fi

おすすめ記事