- #!/usr/bin/env bash
- #
- # Summary: Set or show the local application-specific Python version
- #
- # Usage: pyenv local <version>
- # pyenv local --unset
- #
- # Sets the local application-specific Python version by writing the
- # version name to a file named `.python-version'.
- #
- # When you run a Python command, pyenv will look for a `.python-version'
- # file in the current directory and each parent directory. If no such
- # file is found in the tree, pyenv will use the global Python version
- # specified with `pyenv global'. A version specified with the
- # `PYENV_VERSION' environment variable takes precedence over local
- # and global versions.
- #
- # For backwards compatibility, pyenv will also read version
- # specifications from `.pyenv-version' files, but a `.python-version'
- # file in the same directory takes precedence.
- #
- # <version> should be a string matching a Python version known to pyenv.
- # The special version string `system' will use your default system Python.
- # Run `pyenv versions' for a list of available Python versions.
-
- set -e
- [ -n "$PYENV_DEBUG" ] && set -x
-
- # Provide pyenv completions
- if [ "$1" = "--complete" ]; then
- echo --unset
- echo system
- exec pyenv-versions --bare
- fi
-
- versions=($@)
-
- if [ "$versions" = "--unset" ]; then
- rm -f .python-version .pyenv-version
- elif [ -n "$versions" ]; then
- if [ "$(PYENV_VERSION= pyenv-version-origin)" -ef .pyenv-version ]; then
- rm -f .pyenv-version
- { echo "pyenv: removed existing \`.pyenv-version' file and migrated"
- echo " local version specification to \`.python-version' file"
- } >&2
- fi
- pyenv-version-file-write .python-version "${versions[@]}"
- else
- OLDIFS="$IFS"
- IFS=: versions=($(
- pyenv-version-file-read .python-version ||
- pyenv-version-file-read .pyenv-version ||
- { echo "pyenv: no local version configured for this directory"
- exit 1
- } >&2
- ))
- IFS="$OLDIFS"
- for version in "${versions[@]}"; do
- echo "$version"
- done
- fi
|