#!/usr/bin/env bash # # Summary: Set or show the local application-specific Python version # # Usage: pyenv local # 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. # # 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 previous_file="$(PYENV_VERSION= pyenv-version-origin || true)" pyenv-version-file-write .python-version "${versions[@]}" if [ "$previous_file" -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 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