#!/usr/bin/env bash # Summary: Configure the shell environment for pyenv-virtualenv # Usage: eval "$(pyenv virtualenv-init - [])" # # Automatically activates a Python virtualenv environment based on current # pyenv version. # set -e [ -n "$PYENV_DEBUG" ] && set -x resolve_link() { $(type -p greadlink readlink | head -1) "$1" } abs_dirname() { local cwd="$(pwd)" local path="$1" while [ -n "$path" ]; do cd "${path%/*}" local name="${path##*/}" path="$(resolve_link "$name" || true)" done pwd cd "$cwd" } PYENV_VIRTUALENV_INSTALL_PREFIX="$(dirname "$(abs_dirname "$0")")" print="" for args in "$@" do if [ "$args" = "-" ]; then print=1 shift fi done shell="${1:-$PYENV_SHELL}" if [ -z "$shell" ]; then shell="$(ps -p "$PPID" -o 'args=' 2>/dev/null || true)" shell="${shell##-}" shell="${shell%% *}" shell="${shell:-$SHELL}" shell="${shell##*/}" fi if [ -z "$print" ]; then case "$shell" in bash ) profile='~/.bash_profile' ;; zsh ) profile='~/.zshrc' ;; ksh ) profile='~/.profile' ;; fish ) profile='~/.config/fish/config.fish' ;; * ) profile='your profile' ;; esac { echo "# Load pyenv-virtualenv automatically by adding" echo "# the following to ${profile}:" echo case "$shell" in fish ) echo 'status --is-interactive; and . (pyenv virtualenv-init -|psub)' ;; * ) echo 'eval "$(pyenv virtualenv-init -)"' ;; esac echo } >&2 exit 1 fi case "$shell" in fish ) cat </dev/null; or true) set -l ret \$status if [ -n "\$PYENV_ACTIVATE" ] if [ (pyenv version-name 2>/dev/null; or true) = "system" ] pyenv deactivate --no-error --verbose set -e PYENV_DEACTIVATE return \$ret end if [ "\$PYENV_ACTIVATE" != "\$PYENV_PREFIX" ] if pyenv deactivate --no-error --verbose set -e PYENV_DEACTIVATE pyenv activate --no-error --verbose; or set -e PYENV_DEACTIVATE else pyenv activate --no-error --verbose end end else if [ -z "\$VIRTUAL_ENV" ]; and [ "\$PYENV_DEACTIVATE" != "\$PYENV_PREFIX" ] pyenv activate --no-error --verbose; or true end end return \$ret end EOS ;; ksh ) cat </dev/null || true)" = "system" ]; then eval "\$(pyenv sh-deactivate --no-error --verbose)" unset PYENV_DEACTIVATE return \$ret fi if [ "\$PYENV_ACTIVATE" != "\$(pyenv prefix 2>/dev/null || true)" ]; then if eval "\$(pyenv sh-deactivate --no-error --verbose)"; then unset PYENV_DEACTIVATE eval "\$(pyenv sh-activate --no-error --verbose)" || unset PYENV_DEACTIVATE else eval "\$(pyenv sh-activate --no-error --verbose)" fi fi else if [ -z "\$VIRTUAL_ENV" ] && [ "\$PYENV_DEACTIVATE" != "\$(pyenv prefix 2>/dev/null || true)" ]; then eval "\$(pyenv sh-activate --no-error --verbose)" || true fi fi return \$ret }; EOS case "$shell" in bash ) cat <