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.

56 lines
1.3 KiB

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)"; then
  30. PYENV_PREFIX_PATH="${PYTHON_PATH%/bin/*}"
  31. else
  32. echo "pyenv: system version not found in PATH" >&2
  33. exit 1
  34. fi
  35. else
  36. PYENV_PREFIX_PATH="${PYENV_ROOT}/versions/${version}"
  37. fi
  38. if [ -d "$PYENV_PREFIX_PATH" ]; then
  39. PYENV_PREFIX_PATHS=("${PYENV_PREFIX_PATHS[@]}" "$PYENV_PREFIX_PATH")
  40. else
  41. echo "pyenv: version \`${version}' not installed" >&2
  42. exit 1
  43. fi
  44. done
  45. }
  46. IFS="$OLDIFS"
  47. OLDIFS="$IFS"
  48. { IFS=:
  49. echo "${PYENV_PREFIX_PATHS[*]}"
  50. }
  51. IFS="$OLDIFS"