2014-03-20 09:13:15 -04:00
# Command Reference
Like `git` , the `pyenv` command delegates to subcommands based on its
2017-04-16 23:59:53 -04:00
first argument.
2014-03-20 09:13:15 -04:00
The most common subcommands are:
2021-10-30 15:11:42 -04:00
* [`pyenv help` ](#pyenv-help )
2014-03-20 09:24:31 -04:00
* [`pyenv commands` ](#pyenv-commands )
2014-03-20 09:20:20 -04:00
* [`pyenv local` ](#pyenv-local )
* [`pyenv global` ](#pyenv-global )
* [`pyenv shell` ](#pyenv-shell )
2014-03-20 09:24:31 -04:00
* [`pyenv install` ](#pyenv-install )
* [`pyenv uninstall` ](#pyenv-uninstall )
2014-03-20 09:20:20 -04:00
* [`pyenv rehash` ](#pyenv-rehash )
2014-03-20 09:33:32 -04:00
* [`pyenv version` ](#pyenv-version )
* [`pyenv versions` ](#pyenv-versions )
2014-03-20 09:20:20 -04:00
* [`pyenv which` ](#pyenv-which )
* [`pyenv whence` ](#pyenv-whence )
2021-10-02 16:15:18 -04:00
* [`pyenv exec` ](#pyenv-exec )
2021-10-02 12:58:56 -04:00
* [`pyenv root` ](#pyenv-root )
2021-10-02 12:54:12 -04:00
* [`pyenv prefix` ](#pyenv-prefix )
2021-10-02 13:00:24 -04:00
* [`pyenv hooks` ](#pyenv-hooks )
2021-10-02 16:10:37 -04:00
* [`pyenv shims` ](#pyenv-shims )
2021-10-25 08:30:50 -04:00
* [`pyenv init` ](#pyenv-init )
2021-10-24 16:33:32 -04:00
* [`pyenv completions` ](#pyenv-completions )
2014-03-20 09:13:15 -04:00
2021-10-30 15:11:42 -04:00
## `pyenv help`
List all available pyenv commands along with a brief description of what they do. Run `pyenv help <command>` for information on a specific command. For full documentation, see: https://github.com/pyenv/pyenv#readme
2014-03-20 09:24:31 -04:00
## `pyenv commands`
Lists all available pyenv commands.
2014-03-20 09:20:20 -04:00
## `pyenv local`
2014-03-20 09:13:15 -04:00
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.
2014-03-20 09:20:20 -04:00
### `pyenv local` (advanced)
2014-03-20 09:13:15 -04:00
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
2014-03-20 09:20:20 -04:00
## `pyenv global`
2014-03-20 09:13:15 -04:00
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.
2014-03-20 09:20:20 -04:00
### `pyenv global` (advanced)
2014-03-20 09:13:15 -04:00
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
2014-03-20 09:20:20 -04:00
## `pyenv shell`
2014-03-20 09:13:15 -04:00
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
2014-03-20 09:20:20 -04:00
### `pyenv shell` (advanced)
2014-03-20 09:13:15 -04:00
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
2014-03-20 09:24:31 -04:00
## `pyenv install`
2017-04-16 23:59:53 -04:00
Install a Python version (using [`python-build` ](https://github.com/pyenv/pyenv/tree/master/plugins/python-build )).
2014-03-20 09:24:31 -04:00
2014-03-20 09:33:32 -04:00
Usage: pyenv install [-f] [-kvp] < version >
pyenv install [-f] [-kvp] < definition-file >
pyenv install -l|--list
2016-02-05 03:50:02 -05:00
-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
2014-03-20 09:33:32 -04:00
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
2016-09-15 09:28:54 -04:00
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)
2014-03-20 09:24:31 -04:00
2022-05-03 20:20:16 -04:00
To install the latest version of Python without giving a specific version use the `:latest` syntax. For example, to install the latest patch version for Python 3.8 you could do:
pyenv install 3.8:latest
To install the latest major release for Python 3 try:
pyenv install 3:latest
2014-03-20 09:24:31 -04:00
## `pyenv uninstall`
2022-08-15 13:25:46 -04:00
Uninstall Python versions.
2014-03-20 09:24:31 -04:00
2022-08-15 13:25:46 -04:00
Usage: pyenv uninstall [-f|--force] < version > ...
2014-03-20 09:24:31 -04:00
2014-03-20 09:33:32 -04:00
-f Attempt to remove the specified version without prompting
for confirmation. If the version does not exist, do not
display an error message.
2014-03-20 09:13:15 -04:00
2014-03-20 09:33:32 -04:00
## `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
2014-03-20 09:13:15 -04:00
2014-03-20 09:20:20 -04:00
## `pyenv version`
2014-03-20 09:13:15 -04:00
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)
2014-03-20 09:33:32 -04:00
## `pyenv versions`
2014-03-20 09:13:15 -04:00
2014-03-20 09:33:32 -04:00
Lists all Python versions known to pyenv, and shows an asterisk next to
the currently active version.
2014-03-20 09:13:15 -04:00
2014-03-20 09:33:32 -04:00
$ 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
2014-03-20 09:13:15 -04:00
2014-03-20 09:20:20 -04:00
## `pyenv which`
2014-03-20 09:13:15 -04:00
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
2021-04-09 03:46:22 -04:00
Use --nosystem argument in case when you don't need to search command in the
system environment.
2014-03-20 09:13:15 -04:00
2014-03-20 09:20:20 -04:00
## `pyenv whence`
2014-03-20 09:13:15 -04:00
Lists all Python versions with the given command installed.
$ pyenv whence 2to3
2.6.8
2.7.6
3.3.3
2021-10-02 12:54:12 -04:00
2021-10-02 16:15:18 -04:00
## `pyenv exec`
2021-10-30 15:11:42 -04:00
Usage: pyenv exec < command > [arg1 arg2...]
2021-10-02 16:15:18 -04:00
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:
2021-10-30 15:11:42 -04:00
pyenv exec pip install -r requirements.txt
2021-10-02 16:15:18 -04:00
is equivalent to:
2021-10-30 15:11:42 -04:00
PATH="$PYENV_ROOT/versions/3.9.7/bin:$PATH" pip install -r requirements.txt
2021-10-02 16:15:18 -04:00
2021-10-02 12:58:56 -04:00
## `pyenv root`
Displays the root directory where versions and shims are kept.
$ pyenv root
/home/user/.pyenv
2021-10-02 12:54:12 -04:00
## `pyenv prefix`
2022-03-08 21:33:01 -05:00
Displays the directories where the given Python versions are installed,
separated by colons. If no version is given, `pyenv prefix` displays the
locations of the currently selected versions.
2021-10-02 12:54:12 -04:00
$ pyenv prefix 3.9.7
/home/user/.pyenv/versions/3.9.7
2021-10-02 13:00:24 -04:00
## `pyenv hooks`
Lists installed hook scripts for a given pyenv command.
2021-10-02 16:10:37 -04:00
Usage: pyenv hooks < command >
## `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
2021-10-24 16:33:32 -04:00
2021-10-25 08:30:50 -04:00
## `pyenv init`
Configure the shell environment for pyenv
Usage: eval "$(pyenv init [-|--path] [--no-rehash] [< shell > ])"
- Initialize shims directory, print PYENV_SHELL variable, completions path
and shell function
--path Print shims path
--no-rehash Add no rehash command to output
2021-10-24 16:33:32 -04:00
## `pyenv completions`
Lists available completions for a given pyenv command.
2021-10-25 08:30:50 -04:00
Usage: pyenv completions < command > [arg1 arg2...]