mirror of
https://github.com/starship/starship.git
synced 2026-06-23 02:05:51 +07:00
feat(python): Smarter python binary usage (#1947)
Update the python module to try multiple python binaries when determining the version. With the new logic if starship doesn't find `python` on the `PATH`, which is the default for some Linux Distros, it will fallback to `python3` and then `python2`.
This commit is contained in:
+29
-15
@@ -2009,16 +2009,34 @@ The module will be shown if any of the following conditions are met:
|
||||
|
||||
### Options
|
||||
|
||||
| Option | Default | Description |
|
||||
| -------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
|
||||
| `format` | `'via [${symbol}${pyenv_prefix}${version}( \($virtualenv\))]($style) '` | The format for the module. |
|
||||
| `symbol` | `"🐍 "` | A format string representing the symbol of Python |
|
||||
| `style` | `"yellow bold"` | The style for the module. |
|
||||
| `pyenv_version_name` | `false` | Use pyenv to get Python version |
|
||||
| `pyenv_prefix` | `pyenv ` | Prefix before pyenv version display, only used if pyenv is used |
|
||||
| `scan_for_pyfiles` | `true` | If false, Python files in the current directory will not show this module. |
|
||||
| `python_binary` | `python` | Configures the python binary that Starship executes when getting the version. |
|
||||
| `disabled` | `false` | Disables the `python` module. |
|
||||
| Option | Default | Description |
|
||||
| -------------------- | ----------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
|
||||
| `format` | `'via [${symbol}${pyenv_prefix}${version}( \($virtualenv\))]($style) '` | The format for the module. |
|
||||
| `symbol` | `"🐍 "` | A format string representing the symbol of Python |
|
||||
| `style` | `"yellow bold"` | The style for the module. |
|
||||
| `pyenv_version_name` | `false` | Use pyenv to get Python version |
|
||||
| `pyenv_prefix` | `pyenv ` | Prefix before pyenv version display, only used if pyenv is used |
|
||||
| `scan_for_pyfiles` | `true` | If false, Python files in the current directory will not show this module. |
|
||||
| `python_binary` | `["python", "python3, "python2"]` | Configures the python binaries that Starship should executes when getting the version. |
|
||||
| `disabled` | `false` | Disables the `python` module. |
|
||||
|
||||
::: tip
|
||||
|
||||
The `python_binary` variable accepts either a string or a list of strings.
|
||||
Starship will try executing each binary until it gets a result. Note you can
|
||||
only change the binary that Starship executes to get the version of Python not
|
||||
the arguments that are used.
|
||||
|
||||
The default values and order for `python_binary` was chosen to first identify
|
||||
the Python version in a virtualenv/conda environments (which currently still
|
||||
add a `python`, no matter if it points to `python3` or `python2`). This has the
|
||||
side effect that if you still have a system Python 2 installed, it may be
|
||||
picked up before any Python 3 (at least on Linux Distros that always symlink
|
||||
`/usr/bin/python` to Python 2). If you do not work with Python 2 anymore but
|
||||
cannot remove the system Python 2, changing this to `"python3"` will hide any
|
||||
Python version 2, see example below.
|
||||
|
||||
:::
|
||||
|
||||
### Variables
|
||||
|
||||
@@ -2041,15 +2059,11 @@ symbol = "👾 "
|
||||
pyenv_version_name = true
|
||||
```
|
||||
|
||||
Using the `python3` binary to get the version.
|
||||
|
||||
Note - The `python_binary` variable changes the binary that Starship executes
|
||||
to get the version of Python, it doesn't change the arguments that are used.
|
||||
|
||||
```toml
|
||||
# ~/.config/starship.toml
|
||||
|
||||
[python]
|
||||
# Only use the `python3` binary to get the version.
|
||||
python_binary = "python3"
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user