#!/usr/bin/env bash # # Summary: Activate virtual environment # # Usage: pyenv activate # pyenv activate --unset # # Activate a Python virtualenv environment in current shell. # This acts almost as same as `pyenv shell`, but this invokes the `activate` # script in your shell. # # should be a string matching a Python version known to pyenv. set -e [ -n "$PYENV_DEBUG" ] && set -x # Provide pyenv completions if [ "$1" = "--complete" ]; then echo --unset exec pyenv-virtualenvs --bare fi versions=("$@") shell="$(basename "${PYENV_SHELL:-$SHELL}")" if [ -z "$versions" ]; then OLDIFS="$IFS" IFS=: versions=($(pyenv-version-name)) IFS="$OLDIFS" fi if [ "$1" = "--unset" ]; then echo "pyenv deactivate" exit fi if [ "${#versions[@]}" -gt 1 ]; then echo "pyenv-virtualenv: cannot activate multiple versions at once: ${versions[@]}" 1>&2 exit 1 fi pyenv-virtualenv-prefix "${versions}" 1>/dev/null echo "pyenv shell \"${versions}\"" case "$shell" in fish ) echo ". \"$(pyenv-prefix "${versions}")/bin/activate.fish\"" ;; * ) echo "source \"$(pyenv-prefix "${versions}")/bin/activate\"" ;; esac