mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	This improves the implementation in gh-106643. Previously, venv passed "(<prompt>) " to the activation scripts, but we want to provide the original value so that users can inspect it in the $VIRTUAL_ENV_PROMPT env var. Note: Lib/venv/scripts/common/Activate.ps1 surrounded the prompt value with parens a second time, so no change was necessary in that file.
		
			
				
	
	
		
			75 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
# This file must be used with "source bin/activate" *from bash*
 | 
						|
# You cannot run it directly
 | 
						|
 | 
						|
deactivate () {
 | 
						|
    # reset old environment variables
 | 
						|
    if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
 | 
						|
        PATH="${_OLD_VIRTUAL_PATH:-}"
 | 
						|
        export PATH
 | 
						|
        unset _OLD_VIRTUAL_PATH
 | 
						|
    fi
 | 
						|
    if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
 | 
						|
        PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
 | 
						|
        export PYTHONHOME
 | 
						|
        unset _OLD_VIRTUAL_PYTHONHOME
 | 
						|
    fi
 | 
						|
 | 
						|
    # Call hash to forget past commands. Without forgetting
 | 
						|
    # past commands the $PATH changes we made may not be respected
 | 
						|
    hash -r 2> /dev/null
 | 
						|
 | 
						|
    if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
 | 
						|
        PS1="${_OLD_VIRTUAL_PS1:-}"
 | 
						|
        export PS1
 | 
						|
        unset _OLD_VIRTUAL_PS1
 | 
						|
    fi
 | 
						|
 | 
						|
    unset VIRTUAL_ENV
 | 
						|
    unset VIRTUAL_ENV_PROMPT
 | 
						|
    if [ ! "${1:-}" = "nondestructive" ] ; then
 | 
						|
    # Self destruct!
 | 
						|
        unset -f deactivate
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
# unset irrelevant variables
 | 
						|
deactivate nondestructive
 | 
						|
 | 
						|
# on Windows, a path can contain colons and backslashes and has to be converted:
 | 
						|
case "$(uname)" in
 | 
						|
    CYGWIN*|MSYS*)
 | 
						|
        # transform D:\path\to\venv to /d/path/to/venv on MSYS
 | 
						|
        # and to /cygdrive/d/path/to/venv on Cygwin
 | 
						|
        VIRTUAL_ENV=$(cygpath "__VENV_DIR__")
 | 
						|
        export VIRTUAL_ENV
 | 
						|
        ;;
 | 
						|
    *)
 | 
						|
        # use the path as-is
 | 
						|
        export VIRTUAL_ENV="__VENV_DIR__"
 | 
						|
        ;;
 | 
						|
esac
 | 
						|
 | 
						|
_OLD_VIRTUAL_PATH="$PATH"
 | 
						|
PATH="$VIRTUAL_ENV/__VENV_BIN_NAME__:$PATH"
 | 
						|
export PATH
 | 
						|
 | 
						|
VIRTUAL_ENV_PROMPT="__VENV_PROMPT__"
 | 
						|
export VIRTUAL_ENV_PROMPT
 | 
						|
 | 
						|
# unset PYTHONHOME if set
 | 
						|
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
 | 
						|
# could use `if (set -u; : $PYTHONHOME) ;` in bash
 | 
						|
if [ -n "${PYTHONHOME:-}" ] ; then
 | 
						|
    _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}"
 | 
						|
    unset PYTHONHOME
 | 
						|
fi
 | 
						|
 | 
						|
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
 | 
						|
    _OLD_VIRTUAL_PS1="${PS1:-}"
 | 
						|
    PS1="(__VENV_PROMPT__) ${PS1:-}"
 | 
						|
    export PS1
 | 
						|
fi
 | 
						|
 | 
						|
# Call hash to forget past commands. Without forgetting
 | 
						|
# past commands the $PATH changes we made may not be respected
 | 
						|
hash -r 2> /dev/null
 |