#!/usr/bin/env bash # # Summary: Display real_prefix for a Python virtualenv version # Usage: pyenv virtualenv-prefix [] # set -e [ -n "$PYENV_DEBUG" ] && set -x if [ -z "$PYENV_ROOT" ]; then PYENV_ROOT="${HOME}/.pyenv" fi if [ -n "$1" ]; then versions=($@) IFS=: PYENV_VERSION="${versions[*]}" export PYENV_VERSION else IFS=: versions=($(pyenv-version-name)) fi real_prefix() { # virtualenv local version="$1" PYENV_VERSION="${version}" pyenv-exec python -c 'import sys;print(sys.real_prefix)' 2>/dev/null } base_prefix() { # pyvenv # FIXME: non-pyvenv versions also have sys.base_prefix local version="$1" PYENV_VERSION="${version}" pyenv-exec python -c 'import sys;print(sys.base_prefix)' 2>/dev/null } VIRTUALENV_PREFIX_PATHS=() for version in "${versions[@]}"; do PREFIX="$(pyenv-prefix "${version}")" if [ -f "${PREFIX}/bin/activate" ]; then VIRTUALENV_PREFIX_PATH="$(real_prefix "${version}" || base_prefix "${version}" || true)" VIRTUALENV_PREFIX_PATHS=("${VIRTUALENV_PREFIX_PATHS[@]}" "$VIRTUALENV_PREFIX_PATH") else echo "pyenv-virtualenv: version \`${version}' is not a virtualenv" 1>&2 exit 1 fi done IFS=: echo "${VIRTUALENV_PREFIX_PATHS[*]}"