You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.2 KiB

пре 11 година
пре 11 година
пре 10 година
  1. #!/usr/bin/env bash
  2. #
  3. # Summary: Display real_prefix for a Python virtualenv version
  4. # Usage: pyenv virtualenv-prefix [<virtualenv>]
  5. #
  6. set -e
  7. [ -n "$PYENV_DEBUG" ] && set -x
  8. if [ -z "$PYENV_ROOT" ]; then
  9. PYENV_ROOT="${HOME}/.pyenv"
  10. fi
  11. if [ -n "$1" ]; then
  12. versions=($@)
  13. IFS=: PYENV_VERSION="${versions[*]}"
  14. export PYENV_VERSION
  15. else
  16. IFS=: versions=($(pyenv-version-name))
  17. fi
  18. real_prefix() { # virtualenv
  19. local version="$1"
  20. PYENV_VERSION="${version}" pyenv-exec python -c 'import sys;print(sys.real_prefix)' 2>/dev/null
  21. }
  22. base_prefix() { # pyvenv
  23. # FIXME: non-pyvenv versions also have sys.base_prefix
  24. local version="$1"
  25. PYENV_VERSION="${version}" pyenv-exec python -c 'import sys;print(sys.base_prefix)' 2>/dev/null
  26. }
  27. VIRTUALENV_PREFIX_PATHS=()
  28. for version in "${versions[@]}"; do
  29. PREFIX="$(pyenv-prefix "${version}")"
  30. if [ -f "${PREFIX}/bin/activate" ]; then
  31. VIRTUALENV_PREFIX_PATH="$(real_prefix "${version}" || base_prefix "${version}" || true)"
  32. VIRTUALENV_PREFIX_PATHS=("${VIRTUALENV_PREFIX_PATHS[@]}" "$VIRTUALENV_PREFIX_PATH")
  33. else
  34. echo "pyenv-virtualenv: version \`${version}' is not a virtualenv" 1>&2
  35. exit 1
  36. fi
  37. done
  38. IFS=: echo "${VIRTUALENV_PREFIX_PATHS[*]}"