#!/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 VIRTUALENV_PREFIX_PATHS=() for version in "${versions[@]}"; do if [ "$version" = "system" ]; then echo "pyenv-virtualenv: version \`${version}' is not a virtualenv" 1>&2 exit 1 fi PYENV_PREFIX_PATH="$(pyenv-prefix "${version}")" if [ -x "${PYENV_PREFIX_PATH}/bin/python" ]; then if [ -f "${PYENV_PREFIX_PATH}/bin/activate" ]; then if [ -f "${PYENV_PREFIX_PATH}/bin/conda" ]; then # conda VIRTUALENV_PREFIX_PATH="${PYENV_PREFIX_PATH}" else if [ -f "${PYENV_ROOT}/versions/${version}/pyvenv.cfg" ]; then # pyvenv virtualenv_binpath="$(cut -b 1-1024 "${PYENV_ROOT}/versions/${version}/pyvenv.cfg" | sed -n '/^ *home *= */s///p' || true)" VIRTUALENV_PREFIX_PATH="${virtualenv_binpath%/bin}" else # virtualenv shopt -s nullglob VIRTUALENV_PREFIX_PATH="$(cat "${PYENV_ROOT}/versions/${version}/lib/"*"/orig-prefix.txt" &1 || true)" shopt -u nullglob fi fi if [ -d "${VIRTUALENV_PREFIX_PATH}" ]; then VIRTUALENV_PREFIX_PATHS=("${VIRTUALENV_PREFIX_PATHS[@]}" "${VIRTUALENV_PREFIX_PATH:-${PYENV_PREFIX_PATH}}") else echo "pyenv-virtualenv: version \`${version}' is not a virtualenv" 1>&2 exit 1 fi else echo "pyenv-virtualenv: version \`${version}' is not a virtualenv" 1>&2 exit 1 fi else echo "pyenv-virtualenv: \`python' not found in version \`${version}'" 1>&2 exit 1 fi done IFS=: echo "${VIRTUALENV_PREFIX_PATHS[*]}"