|
|
- #!/usr/bin/env bash
- #
- # Summary: Display real_prefix for a Python virtualenv version
- # Usage: pyenv virtualenv-prefix [<virtualenv>]
- #
-
- 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)"
- if [ -d "${VIRTUALENV_PREFIX_PATH}" ]; then
- VIRTUALENV_PREFIX_PATHS=("${VIRTUALENV_PREFIX_PATHS[@]}" "$VIRTUALENV_PREFIX_PATH")
- fi
- else
- echo "pyenv: version \`${version}' is not a virtualenv" 1>&2
- exit 1
- fi
- done
-
- IFS=: echo "${VIRTUALENV_PREFIX_PATHS[*]}"
|