mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	* Convert paths in venv activate script when using Git Bash under Windows With https://github.com/python/cpython/pull/112508 the check to converts paths when running on Windows was changed from using the non-posix environment variable `$OSTYPE` to using `uname` instead. However this missed the fact that when running under Git Bash on Windows, uname reports `MINGW*` (`$OSTYPE` is still `msys`). This results in `$PATH` being set to something like `D:\a\github-actions-shells\github-actions-shells\venv/Scripts:…`, instead of `/d/a/github-actions-shells/github-actions-shells/venv/Scripts`. Notably, the Git Bash is the bash shell that’s used for GitHub Actions Windows runners, and ships with VSCode.
		
			
				
	
	
		
			76 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
	
		
			2.1 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 locations. Without forgetting
 | 
						|
    # past locations the $PATH changes we made may not be respected.
 | 
						|
    # See "man bash" for more details. hash is usually a builtin of your shell
 | 
						|
    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*|MINGW*)
 | 
						|
        # transform D:\path\to\venv to /d/path/to/venv on MSYS and MINGW
 | 
						|
        # 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
 |