# Command Reference Like `git`, the `pyenv` command delegates to subcommands based on its first argument. The most common subcommands are: * [`pyenv commands`](#pyenv-commands) * [`pyenv local`](#pyenv-local) * [`pyenv global`](#pyenv-global) * [`pyenv shell`](#pyenv-shell) * [`pyenv install`](#pyenv-install) * [`pyenv uninstall`](#pyenv-uninstall) * [`pyenv rehash`](#pyenv-rehash) * [`pyenv version`](#pyenv-version) * [`pyenv versions`](#pyenv-versions) * [`pyenv which`](#pyenv-which) * [`pyenv whence`](#pyenv-whence) * [`pyenv exec`](#pyenv-exec) * [`pyenv root`](#pyenv-root) * [`pyenv prefix`](#pyenv-prefix) * [`pyenv hooks`](#pyenv-hooks) * [`pyenv shims`](#pyenv-shims) * [`pyenv init`](#pyenv-init) * [`pyenv completions`](#pyenv-completions) ## `pyenv commands` Lists all available pyenv commands. ## `pyenv local` Sets a local application-specific Python version by writing the version name to a `.python-version` file in the current directory. This version overrides the global version, and can be overridden itself by setting the `PYENV_VERSION` environment variable or with the `pyenv shell` command. $ pyenv local 2.7.6 When run without a version number, `pyenv local` reports the currently configured local version. You can also unset the local version: $ pyenv local --unset Previous versions of pyenv stored local version specifications in a file named `.pyenv-version`. For backwards compatibility, pyenv will read a local version specified in an `.pyenv-version` file, but a `.python-version` file in the same directory will take precedence. ### `pyenv local` (advanced) You can specify multiple versions as local Python at once. Let's say if you have two versions of 2.7.6 and 3.3.3. If you prefer 2.7.6 over 3.3.3, $ pyenv local 2.7.6 3.3.3 $ pyenv versions system * 2.7.6 (set by /Users/yyuu/path/to/project/.python-version) * 3.3.3 (set by /Users/yyuu/path/to/project/.python-version) $ python --version Python 2.7.6 $ python2.7 --version Python 2.7.6 $ python3.3 --version Python 3.3.3 or, if you prefer 3.3.3 over 2.7.6, $ pyenv local 3.3.3 2.7.6 $ pyenv versions system * 2.7.6 (set by /Users/yyuu/path/to/project/.python-version) * 3.3.3 (set by /Users/yyuu/path/to/project/.python-version) venv27 $ python --version Python 3.3.3 $ python2.7 --version Python 2.7.6 $ python3.3 --version Python 3.3.3 ## `pyenv global` Sets the global version of Python to be used in all shells by writing the version name to the `~/.pyenv/version` file. This version can be overridden by an application-specific `.python-version` file, or by setting the `PYENV_VERSION` environment variable. $ pyenv global 2.7.6 The special version name `system` tells pyenv to use the system Python (detected by searching your `$PATH`). When run without a version number, `pyenv global` reports the currently configured global version. ### `pyenv global` (advanced) You can specify multiple versions as global Python at once. Let's say if you have two versions of 2.7.6 and 3.3.3. If you prefer 2.7.6 over 3.3.3, $ pyenv global 2.7.6 3.3.3 $ pyenv versions system * 2.7.6 (set by /Users/yyuu/.pyenv/version) * 3.3.3 (set by /Users/yyuu/.pyenv/version) $ python --version Python 2.7.6 $ python2.7 --version Python 2.7.6 $ python3.3 --version Python 3.3.3 or, if you prefer 3.3.3 over 2.7.6, $ pyenv global 3.3.3 2.7.6 $ pyenv versions system * 2.7.6 (set by /Users/yyuu/.pyenv/version) * 3.3.3 (set by /Users/yyuu/.pyenv/version) venv27 $ python --version Python 3.3.3 $ python2.7 --version Python 2.7.6 $ python3.3 --version Python 3.3.3 ## `pyenv shell` Sets a shell-specific Python version by setting the `PYENV_VERSION` environment variable in your shell. This version overrides application-specific versions and the global version. $ pyenv shell pypy-2.2.1 When run without a version number, `pyenv shell` reports the current value of `PYENV_VERSION`. You can also unset the shell version: $ pyenv shell --unset Note that you'll need pyenv's shell integration enabled (step 3 of the installation instructions) in order to use this command. If you prefer not to use shell integration, you may simply set the `PYENV_VERSION` variable yourself: $ export PYENV_VERSION=pypy-2.2.1 ### `pyenv shell` (advanced) You can specify multiple versions via `PYENV_VERSION` at once. Let's say if you have two versions of 2.7.6 and 3.3.3. If you prefer 2.7.6 over 3.3.3, $ pyenv shell 2.7.6 3.3.3 $ pyenv versions system * 2.7.6 (set by PYENV_VERSION environment variable) * 3.3.3 (set by PYENV_VERSION environment variable) $ python --version Python 2.7.6 $ python2.7 --version Python 2.7.6 $ python3.3 --version Python 3.3.3 or, if you prefer 3.3.3 over 2.7.6, $ pyenv shell 3.3.3 2.7.6 $ pyenv versions system * 2.7.6 (set by PYENV_VERSION environment variable) * 3.3.3 (set by PYENV_VERSION environment variable) venv27 $ python --version Python 3.3.3 $ python2.7 --version Python 2.7.6 $ python3.3 --version Python 3.3.3 ## `pyenv install` Install a Python version (using [`python-build`](https://github.com/pyenv/pyenv/tree/master/plugins/python-build)). Usage: pyenv install [-f] [-kvp] pyenv install [-f] [-kvp] pyenv install -l|--list -l/--list List all available versions -f/--force Install even if the version appears to be installed already -s/--skip-existing Skip the installation if the version appears to be installed already python-build options: -k/--keep Keep source tree in $PYENV_BUILD_ROOT after installation (defaults to $PYENV_ROOT/sources) -v/--verbose Verbose mode: print compilation status to stdout -p/--patch Apply a patch from stdin before building -g/--debug Build a debug version To list the all available versions of Python, including Anaconda, Jython, pypy, and stackless, use: $ pyenv install --list Then install the desired versions: $ pyenv install 2.7.6 $ pyenv install 2.6.8 $ pyenv versions system 2.6.8 * 2.7.6 (set by /home/yyuu/.pyenv/version) ## `pyenv uninstall` Uninstall a specific Python version. Usage: pyenv uninstall [-f|--force] -f Attempt to remove the specified version without prompting for confirmation. If the version does not exist, do not display an error message. ## `pyenv rehash` Installs shims for all Python binaries known to pyenv (i.e., `~/.pyenv/versions/*/bin/*`). Run this command after you install a new version of Python, or install a package that provides binaries. $ pyenv rehash ## `pyenv version` Displays the currently active Python version, along with information on how it was set. $ pyenv version 2.7.6 (set by /home/yyuu/.pyenv/version) ## `pyenv versions` Lists all Python versions known to pyenv, and shows an asterisk next to the currently active version. $ pyenv versions 2.5.6 2.6.8 * 2.7.6 (set by /home/yyuu/.pyenv/version) 3.3.3 jython-2.5.3 pypy-2.2.1 ## `pyenv which` Displays the full path to the executable that pyenv will invoke when you run the given command. $ pyenv which python3.3 /home/yyuu/.pyenv/versions/3.3.3/bin/python3.3 Use --nosystem argument in case when you don't need to search command in the system environment. ## `pyenv whence` Lists all Python versions with the given command installed. $ pyenv whence 2to3 2.6.8 2.7.6 3.3.3 ## `pyenv exec` `Usage: pyenv exec [arg1 arg2...]` Runs an executable by first preparing PATH so that the selected Python version's `bin` directory is at the front. For example, if the currently selected Python version is 3.9.7: `pyenv exec pip install -r requirements.txt` is equivalent to: `PATH="$PYENV_ROOT/versions/3.9.7/bin:$PATH" pip install -r requirements.txt` ## `pyenv root` Displays the root directory where versions and shims are kept. $ pyenv root /home/user/.pyenv ## `pyenv prefix` Displays the directory where a Python version is installed. If no version is given, `pyenv prefix` displays the location of the currently selected version. $ pyenv prefix 3.9.7 /home/user/.pyenv/versions/3.9.7 ## `pyenv hooks` Lists installed hook scripts for a given pyenv command. Usage: pyenv hooks ## `pyenv shims` List existing pyenv shims. Usage: pyenv shims [--short] $ pyenv shims /home/user/.pyenv/shims/2to3 /home/user/.pyenv/shims/2to3-3.9 /home/user/.pyenv/shims/idle /home/user/.pyenv/shims/idle3 /home/user/.pyenv/shims/idle3.9 /home/user/.pyenv/shims/pip /home/user/.pyenv/shims/pip3 /home/user/.pyenv/shims/pip3.9 /home/user/.pyenv/shims/pydoc /home/user/.pyenv/shims/pydoc3 /home/user/.pyenv/shims/pydoc3.9 /home/user/.pyenv/shims/python /home/user/.pyenv/shims/python3 /home/user/.pyenv/shims/python3.9 /home/user/.pyenv/shims/python3.9-config /home/user/.pyenv/shims/python3.9-gdb.py /home/user/.pyenv/shims/python3-config /home/user/.pyenv/shims/python-config ## `pyenv init` Configure the shell environment for pyenv Usage: eval "$(pyenv init [-|--path] [--no-rehash] [])" - Initialize shims directory, print PYENV_SHELL variable, completions path and shell function --path Print shims path --no-rehash Add no rehash command to output ## `pyenv completions` Lists available completions for a given pyenv command. Usage: pyenv completions [arg1 arg2...]