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.

59 lines
1.5 KiB

10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
  1. #!/usr/bin/env bash
  2. # Summary: Display prefix for a Python version
  3. # Usage: pyenv prefix [<version>]
  4. #
  5. # Displays the directory where a Python version is installed. If no
  6. # version is given, `pyenv prefix' displays the location of the
  7. # currently selected version.
  8. set -e
  9. [ -n "$PYENV_DEBUG" ] && set -x
  10. # Provide pyenv completions
  11. if [ "$1" = "--complete" ]; then
  12. echo system
  13. exec pyenv-versions --bare
  14. fi
  15. if [ -n "$1" ]; then
  16. OLDIFS="$IFS"
  17. { IFS=:
  18. export PYENV_VERSION="$*"
  19. }
  20. IFS="$OLDIFS"
  21. elif [ -z "$PYENV_VERSION" ]; then
  22. PYENV_VERSION="$(pyenv-version-name)"
  23. fi
  24. PYENV_PREFIX_PATHS=()
  25. OLDIFS="$IFS"
  26. { IFS=:
  27. for version in ${PYENV_VERSION}; do
  28. if [ "$version" = "system" ]; then
  29. if PYTHON_PATH="$(PYENV_VERSION="${version}" pyenv-which python 2>/dev/null)" || \
  30. PYTHON_PATH="$(PYENV_VERSION="${version}" pyenv-which python3 2>/dev/null)" || \
  31. PYTHON_PATH="$(PYENV_VERSION="${version}" pyenv-which python2 2>/dev/null)"; then
  32. PYENV_PREFIX_PATH="${PYTHON_PATH%/bin/*}"
  33. PYENV_PREFIX_PATH="${PYENV_PREFIX_PATH:-/}"
  34. else
  35. echo "pyenv: system version not found in PATH" >&2
  36. exit 1
  37. fi
  38. else
  39. PYENV_PREFIX_PATH="${PYENV_ROOT}/versions/${version}"
  40. fi
  41. if [ -d "$PYENV_PREFIX_PATH" ]; then
  42. PYENV_PREFIX_PATHS=("${PYENV_PREFIX_PATHS[@]}" "$PYENV_PREFIX_PATH")
  43. else
  44. echo "pyenv: version \`${version}' not installed" >&2
  45. exit 1
  46. fi
  47. done
  48. }
  49. IFS="$OLDIFS"
  50. OLDIFS="$IFS"
  51. { IFS=:
  52. echo "${PYENV_PREFIX_PATHS[*]}"
  53. }
  54. IFS="$OLDIFS"