mirror of
https://github.com/pyenv/pyenv-virtualenv.git
synced 2025-11-13 14:03:53 -05:00
This means that pyenv-virtualenv will not allow manual deactivation of virtualenv if pyenv-virtualenv-init is enabled. This must be acceptable since the activation of virtualenv is just setting of environment variables in current implementation.
164 lines
2.5 KiB
Bash
Executable File
164 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Summary: Deactivate virtual environment
|
|
#
|
|
# Usage: pyenv deactivate
|
|
#
|
|
# Deactivate a Python virtual environment.
|
|
|
|
set -e
|
|
[ -n "$PYENV_DEBUG" ] && set -x
|
|
|
|
unset FORCE
|
|
unset QUIET
|
|
unset VERBOSE
|
|
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
"-f" | "--force" )
|
|
FORCE=1
|
|
;;
|
|
"-q" | "--quiet")
|
|
QUIET=1
|
|
;;
|
|
"-v" | "--verbose" )
|
|
VERBOSE=1
|
|
;;
|
|
* )
|
|
break
|
|
;;
|
|
esac
|
|
shift 1
|
|
done
|
|
|
|
if [ -z "${VIRTUAL_ENV}" ]; then
|
|
if [ -z "${FORCE}" ]; then
|
|
if [ -z "${QUIET}" ]; then
|
|
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2
|
|
fi
|
|
echo "false"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
shell="$(basename "${PYENV_SHELL:-$SHELL}")"
|
|
prefix="${VIRTUAL_ENV}"
|
|
|
|
if [[ "${prefix}" != "${prefix%/envs/*}" ]]; then
|
|
venv="$(basename "${prefix%/envs/*}")/envs/${prefix##*/}"
|
|
else
|
|
venv="${prefix##*/}"
|
|
fi
|
|
|
|
echo "pyenv-virtualenv: deactivate ${venv}" 1>&2
|
|
|
|
if [ -n "${PYENV_ACTIVATE_SHELL}" ]; then
|
|
# shell version set in pyenv-sh-activate should be unset
|
|
# https://github.com/yyuu/pyenv-virtualenv/issues/61
|
|
case "$shell" in
|
|
fish )
|
|
cat <<EOS
|
|
set -e PYENV_VERSION;
|
|
set -e PYENV_ACTIVATE_SHELL;
|
|
EOS
|
|
;;
|
|
* )
|
|
cat <<EOS
|
|
unset PYENV_VERSION;
|
|
unset PYENV_ACTIVATE_SHELL;
|
|
EOS
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# virtualenv/pyvenv
|
|
case "${shell}" in
|
|
fish )
|
|
echo "set -e VIRTUAL_ENV;"
|
|
;;
|
|
* )
|
|
echo "unset VIRTUAL_ENV;"
|
|
;;
|
|
esac
|
|
|
|
# anaconda/miniconda
|
|
if [ -n "${CONDA_DEFAULT_ENV}" ]; then
|
|
case "${shell}" in
|
|
fish )
|
|
echo "set -e CONDA_DEFAULT_ENV;"
|
|
;;
|
|
* )
|
|
echo "unset CONDA_DEFAULT_ENV;"
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
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
|
|
if [ -n "\${_OLD_VIRTUAL_PATH}" ]; then
|
|
export PATH="\${_OLD_VIRTUAL_PATH}";
|
|
unset _OLD_VIRTUAL_PATH;
|
|
fi;
|
|
EOS
|
|
;;
|
|
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 )
|
|
:
|
|
;;
|
|
* )
|
|
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
|
|
;;
|
|
esac
|