mirror of
https://github.com/pyenv/pyenv-virtualenv.git
synced 2025-11-08 11:33:55 -05:00
Restore variables set by activate script of virtualenv properly (#150)
The `activate` script does't export the variables of `_OLD_VIRTUAL_*`, most the deactivation code needed to be moved to `sh-deactivate`.
This commit is contained in:
@@ -98,33 +98,71 @@ if [ -n "${CONDA_DEFAULT_ENV}" ]; then
|
||||
esac
|
||||
fi
|
||||
|
||||
if [ -n "${_OLD_VIRTUAL_PYTHONHOME}" ]; then
|
||||
case "${shell}" in
|
||||
fish )
|
||||
cat <<EOS
|
||||
setenv PYTHONHOME "${_OLD_VIRTUAL_PYTHONHOME}";
|
||||
set -e _OLD_VIRTUAL_PYTHONHOME;
|
||||
case "${shell}" in
|
||||
fish )
|
||||
cat <<EOS
|
||||
if [ -n "\$_OLD_VIRTUAL_PATH" ];
|
||||
setenv PATH "\$_OLD_VIRTUAL_PATH";
|
||||
set -e _OLD_VIRTUAL_PATH;
|
||||
end;
|
||||
EOS
|
||||
;;
|
||||
* )
|
||||
cat <<EOS
|
||||
export PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME}";
|
||||
unset _OLD_VIRTUAL_PYTHONHOME;
|
||||
;;
|
||||
* )
|
||||
cat <<EOS
|
||||
if [ -n "\${_OLD_VIRTUAL_PATH}" ]; then
|
||||
export PATH="\${_OLD_VIRTUAL_PATH}";
|
||||
unset _OLD_VIRTUAL_PATH;
|
||||
fi;
|
||||
EOS
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
case "${shell}" in
|
||||
fish )
|
||||
cat <<EOS
|
||||
if [ -n "\$_OLD_VIRTUAL_PYTHONHOME" ];
|
||||
setenv PYTHONHOME "\$_OLD_VIRTUAL_PYTHONHOME";
|
||||
set -e _OLD_VIRTUAL_PYTHONHOME;
|
||||
end;
|
||||
EOS
|
||||
;;
|
||||
* )
|
||||
cat <<EOS
|
||||
if [ -n "\${_OLD_VIRTUAL_PYTHONHOME}" ]; then
|
||||
export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
|
||||
unset _OLD_VIRTUAL_PYTHONHOME;
|
||||
fi;
|
||||
EOS
|
||||
;;
|
||||
esac
|
||||
|
||||
case "${shell}" in
|
||||
fish )
|
||||
:
|
||||
;;
|
||||
* )
|
||||
if [ -n "${_OLD_VIRTUAL_PS1}" ]; then
|
||||
cat <<EOS
|
||||
export PS1='${_OLD_VIRTUAL_PS1}';
|
||||
unset _OLD_VIRTUAL_PS1;
|
||||
cat <<EOS
|
||||
if [ -n "\${_OLD_VIRTUAL_PS1}" ]; then
|
||||
export PS1="\${_OLD_VIRTUAL_PS1}";
|
||||
unset _OLD_VIRTUAL_PS1;
|
||||
fi;
|
||||
EOS
|
||||
;;
|
||||
esac
|
||||
|
||||
case "${shell}" in
|
||||
fish )
|
||||
cat <<EOS
|
||||
if functions -g deactivate;
|
||||
functions -e deactivate;
|
||||
end;
|
||||
EOS
|
||||
;;
|
||||
* )
|
||||
cat <<EOS
|
||||
if declare -f deactivate 1>/dev/null 2>&1; then
|
||||
unset -f deactivate;
|
||||
fi;
|
||||
EOS
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -263,13 +263,15 @@ EOS
|
||||
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
|
||||
export PYENV_ACTIVATE_SHELL=
|
||||
|
||||
stub pyenv-sh-deactivate "echo deactivated"
|
||||
|
||||
run pyenv-sh-activate --unset
|
||||
|
||||
unstub pyenv-sh-deactivate
|
||||
|
||||
assert_success
|
||||
assert_output <<EOS
|
||||
pyenv-virtualenv: deactivate venv
|
||||
export PYENV_DEACTIVATE="${PYENV_ROOT}/versions/venv";
|
||||
unset VIRTUAL_ENV;
|
||||
deactivated
|
||||
EOS
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,21 @@ pyenv-virtualenv: deactivate anaconda-2.3.0
|
||||
export PYENV_DEACTIVATE="${PYENV_ROOT}/versions/anaconda-2.3.0";
|
||||
unset VIRTUAL_ENV;
|
||||
unset CONDA_DEFAULT_ENV;
|
||||
if [ -n "\${_OLD_VIRTUAL_PATH}" ]; then
|
||||
export PATH="\${_OLD_VIRTUAL_PATH}";
|
||||
unset _OLD_VIRTUAL_PATH;
|
||||
fi;
|
||||
if [ -n "\${_OLD_VIRTUAL_PYTHONHOME}" ]; then
|
||||
export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
|
||||
unset _OLD_VIRTUAL_PYTHONHOME;
|
||||
fi;
|
||||
if [ -n "\${_OLD_VIRTUAL_PS1}" ]; then
|
||||
export PS1="\${_OLD_VIRTUAL_PS1}";
|
||||
unset _OLD_VIRTUAL_PS1;
|
||||
fi;
|
||||
if declare -f deactivate 1>/dev/null 2>&1; then
|
||||
unset -f deactivate;
|
||||
fi;
|
||||
EOS
|
||||
}
|
||||
|
||||
@@ -51,6 +66,17 @@ pyenv-virtualenv: deactivate anaconda-2.3.0
|
||||
setenv PYENV_DEACTIVATE "${PYENV_ROOT}/versions/anaconda-2.3.0";
|
||||
set -e VIRTUAL_ENV;
|
||||
set -e CONDA_DEFAULT_ENV;
|
||||
if [ -n "\$_OLD_VIRTUAL_PATH" ];
|
||||
setenv PATH "\$_OLD_VIRTUAL_PATH";
|
||||
set -e _OLD_VIRTUAL_PATH;
|
||||
end;
|
||||
if [ -n "\$_OLD_VIRTUAL_PYTHONHOME" ];
|
||||
setenv PYTHONHOME "\$_OLD_VIRTUAL_PYTHONHOME";
|
||||
set -e _OLD_VIRTUAL_PYTHONHOME;
|
||||
end;
|
||||
if functions -g deactivate;
|
||||
functions -e deactivate;
|
||||
end;
|
||||
EOS
|
||||
}
|
||||
|
||||
@@ -70,5 +96,20 @@ pyenv-virtualenv: deactivate anaconda-2.3.0/envs/foo
|
||||
export PYENV_DEACTIVATE="${PYENV_ROOT}/versions/anaconda-2.3.0/envs/foo";
|
||||
unset VIRTUAL_ENV;
|
||||
unset CONDA_DEFAULT_ENV;
|
||||
if [ -n "\${_OLD_VIRTUAL_PATH}" ]; then
|
||||
export PATH="\${_OLD_VIRTUAL_PATH}";
|
||||
unset _OLD_VIRTUAL_PATH;
|
||||
fi;
|
||||
if [ -n "\${_OLD_VIRTUAL_PYTHONHOME}" ]; then
|
||||
export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
|
||||
unset _OLD_VIRTUAL_PYTHONHOME;
|
||||
fi;
|
||||
if [ -n "\${_OLD_VIRTUAL_PS1}" ]; then
|
||||
export PS1="\${_OLD_VIRTUAL_PS1}";
|
||||
unset _OLD_VIRTUAL_PS1;
|
||||
fi;
|
||||
if declare -f deactivate 1>/dev/null 2>&1; then
|
||||
unset -f deactivate;
|
||||
fi;
|
||||
EOS
|
||||
}
|
||||
|
||||
@@ -28,6 +28,21 @@ setup() {
|
||||
pyenv-virtualenv: deactivate venv
|
||||
export PYENV_DEACTIVATE="${PYENV_ROOT}/versions/venv";
|
||||
unset VIRTUAL_ENV;
|
||||
if [ -n "\${_OLD_VIRTUAL_PATH}" ]; then
|
||||
export PATH="\${_OLD_VIRTUAL_PATH}";
|
||||
unset _OLD_VIRTUAL_PATH;
|
||||
fi;
|
||||
if [ -n "\${_OLD_VIRTUAL_PYTHONHOME}" ]; then
|
||||
export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
|
||||
unset _OLD_VIRTUAL_PYTHONHOME;
|
||||
fi;
|
||||
if [ -n "\${_OLD_VIRTUAL_PS1}" ]; then
|
||||
export PS1="\${_OLD_VIRTUAL_PS1}";
|
||||
unset _OLD_VIRTUAL_PS1;
|
||||
fi;
|
||||
if declare -f deactivate 1>/dev/null 2>&1; then
|
||||
unset -f deactivate;
|
||||
fi;
|
||||
EOS
|
||||
}
|
||||
|
||||
@@ -42,6 +57,21 @@ EOS
|
||||
pyenv-virtualenv: deactivate venv
|
||||
export PYENV_DEACTIVATE="${PYENV_ROOT}/versions/venv";
|
||||
unset VIRTUAL_ENV;
|
||||
if [ -n "\${_OLD_VIRTUAL_PATH}" ]; then
|
||||
export PATH="\${_OLD_VIRTUAL_PATH}";
|
||||
unset _OLD_VIRTUAL_PATH;
|
||||
fi;
|
||||
if [ -n "\${_OLD_VIRTUAL_PYTHONHOME}" ]; then
|
||||
export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
|
||||
unset _OLD_VIRTUAL_PYTHONHOME;
|
||||
fi;
|
||||
if [ -n "\${_OLD_VIRTUAL_PS1}" ]; then
|
||||
export PS1="\${_OLD_VIRTUAL_PS1}";
|
||||
unset _OLD_VIRTUAL_PS1;
|
||||
fi;
|
||||
if declare -f deactivate 1>/dev/null 2>&1; then
|
||||
unset -f deactivate;
|
||||
fi;
|
||||
EOS
|
||||
}
|
||||
|
||||
@@ -56,6 +86,21 @@ EOS
|
||||
pyenv-virtualenv: deactivate venv
|
||||
export PYENV_DEACTIVATE="${PYENV_ROOT}/versions/venv";
|
||||
unset VIRTUAL_ENV;
|
||||
if [ -n "\${_OLD_VIRTUAL_PATH}" ]; then
|
||||
export PATH="\${_OLD_VIRTUAL_PATH}";
|
||||
unset _OLD_VIRTUAL_PATH;
|
||||
fi;
|
||||
if [ -n "\${_OLD_VIRTUAL_PYTHONHOME}" ]; then
|
||||
export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
|
||||
unset _OLD_VIRTUAL_PYTHONHOME;
|
||||
fi;
|
||||
if [ -n "\${_OLD_VIRTUAL_PS1}" ]; then
|
||||
export PS1="\${_OLD_VIRTUAL_PS1}";
|
||||
unset _OLD_VIRTUAL_PS1;
|
||||
fi;
|
||||
if declare -f deactivate 1>/dev/null 2>&1; then
|
||||
unset -f deactivate;
|
||||
fi;
|
||||
EOS
|
||||
}
|
||||
|
||||
@@ -72,6 +117,21 @@ unset PYENV_VERSION;
|
||||
unset PYENV_ACTIVATE_SHELL;
|
||||
export PYENV_DEACTIVATE="${PYENV_ROOT}/versions/venv";
|
||||
unset VIRTUAL_ENV;
|
||||
if [ -n "\${_OLD_VIRTUAL_PATH}" ]; then
|
||||
export PATH="\${_OLD_VIRTUAL_PATH}";
|
||||
unset _OLD_VIRTUAL_PATH;
|
||||
fi;
|
||||
if [ -n "\${_OLD_VIRTUAL_PYTHONHOME}" ]; then
|
||||
export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
|
||||
unset _OLD_VIRTUAL_PYTHONHOME;
|
||||
fi;
|
||||
if [ -n "\${_OLD_VIRTUAL_PS1}" ]; then
|
||||
export PS1="\${_OLD_VIRTUAL_PS1}";
|
||||
unset _OLD_VIRTUAL_PS1;
|
||||
fi;
|
||||
if declare -f deactivate 1>/dev/null 2>&1; then
|
||||
unset -f deactivate;
|
||||
fi;
|
||||
EOS
|
||||
}
|
||||
|
||||
@@ -88,6 +148,21 @@ unset PYENV_VERSION;
|
||||
unset PYENV_ACTIVATE_SHELL;
|
||||
export PYENV_DEACTIVATE="${PYENV_ROOT}/versions/venv";
|
||||
unset VIRTUAL_ENV;
|
||||
if [ -n "\${_OLD_VIRTUAL_PATH}" ]; then
|
||||
export PATH="\${_OLD_VIRTUAL_PATH}";
|
||||
unset _OLD_VIRTUAL_PATH;
|
||||
fi;
|
||||
if [ -n "\${_OLD_VIRTUAL_PYTHONHOME}" ]; then
|
||||
export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
|
||||
unset _OLD_VIRTUAL_PYTHONHOME;
|
||||
fi;
|
||||
if [ -n "\${_OLD_VIRTUAL_PS1}" ]; then
|
||||
export PS1="\${_OLD_VIRTUAL_PS1}";
|
||||
unset _OLD_VIRTUAL_PS1;
|
||||
fi;
|
||||
if declare -f deactivate 1>/dev/null 2>&1; then
|
||||
unset -f deactivate;
|
||||
fi;
|
||||
EOS
|
||||
}
|
||||
|
||||
@@ -102,6 +177,21 @@ EOS
|
||||
pyenv-virtualenv: deactivate venv
|
||||
export PYENV_DEACTIVATE="${PYENV_ROOT}/versions/venv";
|
||||
unset VIRTUAL_ENV;
|
||||
if [ -n "\${_OLD_VIRTUAL_PATH}" ]; then
|
||||
export PATH="\${_OLD_VIRTUAL_PATH}";
|
||||
unset _OLD_VIRTUAL_PATH;
|
||||
fi;
|
||||
if [ -n "\${_OLD_VIRTUAL_PYTHONHOME}" ]; then
|
||||
export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
|
||||
unset _OLD_VIRTUAL_PYTHONHOME;
|
||||
fi;
|
||||
if [ -n "\${_OLD_VIRTUAL_PS1}" ]; then
|
||||
export PS1="\${_OLD_VIRTUAL_PS1}";
|
||||
unset _OLD_VIRTUAL_PS1;
|
||||
fi;
|
||||
if declare -f deactivate 1>/dev/null 2>&1; then
|
||||
unset -f deactivate;
|
||||
fi;
|
||||
EOS
|
||||
}
|
||||
|
||||
@@ -116,6 +206,17 @@ EOS
|
||||
pyenv-virtualenv: deactivate venv
|
||||
setenv PYENV_DEACTIVATE "${PYENV_ROOT}/versions/venv";
|
||||
set -e VIRTUAL_ENV;
|
||||
if [ -n "\$_OLD_VIRTUAL_PATH" ];
|
||||
setenv PATH "\$_OLD_VIRTUAL_PATH";
|
||||
set -e _OLD_VIRTUAL_PATH;
|
||||
end;
|
||||
if [ -n "\$_OLD_VIRTUAL_PYTHONHOME" ];
|
||||
setenv PYTHONHOME "\$_OLD_VIRTUAL_PYTHONHOME";
|
||||
set -e _OLD_VIRTUAL_PYTHONHOME;
|
||||
end;
|
||||
if functions -g deactivate;
|
||||
functions -e deactivate;
|
||||
end;
|
||||
EOS
|
||||
}
|
||||
|
||||
@@ -130,6 +231,17 @@ EOS
|
||||
pyenv-virtualenv: deactivate venv
|
||||
setenv PYENV_DEACTIVATE "${PYENV_ROOT}/versions/venv";
|
||||
set -e VIRTUAL_ENV;
|
||||
if [ -n "\$_OLD_VIRTUAL_PATH" ];
|
||||
setenv PATH "\$_OLD_VIRTUAL_PATH";
|
||||
set -e _OLD_VIRTUAL_PATH;
|
||||
end;
|
||||
if [ -n "\$_OLD_VIRTUAL_PYTHONHOME" ];
|
||||
setenv PYTHONHOME "\$_OLD_VIRTUAL_PYTHONHOME";
|
||||
set -e _OLD_VIRTUAL_PYTHONHOME;
|
||||
end;
|
||||
if functions -g deactivate;
|
||||
functions -e deactivate;
|
||||
end;
|
||||
EOS
|
||||
}
|
||||
|
||||
@@ -146,6 +258,17 @@ set -e PYENV_VERSION;
|
||||
set -e PYENV_ACTIVATE_SHELL;
|
||||
setenv PYENV_DEACTIVATE "${PYENV_ROOT}/versions/venv";
|
||||
set -e VIRTUAL_ENV;
|
||||
if [ -n "\$_OLD_VIRTUAL_PATH" ];
|
||||
setenv PATH "\$_OLD_VIRTUAL_PATH";
|
||||
set -e _OLD_VIRTUAL_PATH;
|
||||
end;
|
||||
if [ -n "\$_OLD_VIRTUAL_PYTHONHOME" ];
|
||||
setenv PYTHONHOME "\$_OLD_VIRTUAL_PYTHONHOME";
|
||||
set -e _OLD_VIRTUAL_PYTHONHOME;
|
||||
end;
|
||||
if functions -g deactivate;
|
||||
functions -e deactivate;
|
||||
end;
|
||||
EOS
|
||||
}
|
||||
|
||||
@@ -162,6 +285,17 @@ set -e PYENV_VERSION;
|
||||
set -e PYENV_ACTIVATE_SHELL;
|
||||
setenv PYENV_DEACTIVATE "${PYENV_ROOT}/versions/venv";
|
||||
set -e VIRTUAL_ENV;
|
||||
if [ -n "\$_OLD_VIRTUAL_PATH" ];
|
||||
setenv PATH "\$_OLD_VIRTUAL_PATH";
|
||||
set -e _OLD_VIRTUAL_PATH;
|
||||
end;
|
||||
if [ -n "\$_OLD_VIRTUAL_PYTHONHOME" ];
|
||||
setenv PYTHONHOME "\$_OLD_VIRTUAL_PYTHONHOME";
|
||||
set -e _OLD_VIRTUAL_PYTHONHOME;
|
||||
end;
|
||||
if functions -g deactivate;
|
||||
functions -e deactivate;
|
||||
end;
|
||||
EOS
|
||||
}
|
||||
|
||||
@@ -176,6 +310,17 @@ EOS
|
||||
pyenv-virtualenv: deactivate venv
|
||||
setenv PYENV_DEACTIVATE "${PYENV_ROOT}/versions/venv";
|
||||
set -e VIRTUAL_ENV;
|
||||
if [ -n "\$_OLD_VIRTUAL_PATH" ];
|
||||
setenv PATH "\$_OLD_VIRTUAL_PATH";
|
||||
set -e _OLD_VIRTUAL_PATH;
|
||||
end;
|
||||
if [ -n "\$_OLD_VIRTUAL_PYTHONHOME" ];
|
||||
setenv PYTHONHOME "\$_OLD_VIRTUAL_PYTHONHOME";
|
||||
set -e _OLD_VIRTUAL_PYTHONHOME;
|
||||
end;
|
||||
if functions -g deactivate;
|
||||
functions -e deactivate;
|
||||
end;
|
||||
EOS
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user