#!/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 if [ "$1" = "--unset" ]; then echo "pyenv deactivate" exit fi versions=("$@") if [ -z "$versions" ]; then no_shell=1 OLDIFS="$IFS" IFS=: versions=($(pyenv-version-name)) IFS="$OLDIFS" fi if [ -z "${PYENV_VIRTUALENV_INIT}" ]; then # Backward compatibility issue # https://github.com/yyuu/pyenv-virtualenv/issues/26 no_shell= 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 shell="$(basename "${PYENV_SHELL:-$SHELL}")" case "$shell" in bash ) profile="$HOME/.bash_profile" ;; zsh ) profile="$HOME/.zshrc" ;; ksh ) profile="$HOME/.profile" ;; fish ) profile="$HOME/.config/fish/config.fish" ;; * ) profile="$HOME/.profile" ;; esac # Display setup instruction if 'pyenv virtualenv-init -' is not found in "$profile" if [ -f "$profile" ] && grep -q 'pyenv init -' "$profile" && ! grep -q 'pyenv virtualenv-init -' "$profile"; then pyenv-virtualenv-init >&2 || true fi if [ -z "$no_shell" ]; then echo "pyenv shell \"${versions}\";" fi case "$shell" in fish ) cat <