python
operation
Installs python to be used by the current repository.
note
Omni uses asdf
in the background to manage that tool. The asdf
installation of omni is in its own directory, and won't conflict with any installation of asdf
you might have on your system.
Parameters
The following parameters can be used:
Parameter | Type | Description |
---|---|---|
dir | path | Relative path (or list of relative paths) to the directory in the project for which to use the python version; each specified directory will have its own virtual environment. |
pip | path | Relative path (or list of relative paths) to the requirements files to be used as parameter to pip install -r for installing dependencies; if using the word auto , omni will try to install the requirements.txt file in each specified dir (or in each discovered directory with version: auto ) if it exists |
url | string | The URL to download the tool from, in case the tool is not registered in asdf-plugins or if you want to use a custom version. |
version | string | The version of the tool to install; see version handling below for more details. |
Version handling
The following strings can be used to specify the version:
Version | Meaning |
---|---|
1.2 | Accepts 1.2 and any version prefixed by 1.2.* |
1.2.3 | Accepts 1.2.3 and any version prefixed by 1.2.3.* |
~1.2.3 | Accepts 1.2.3 and higher patch versions (1.2.4 , 1.2.5 , etc. but not 1.3.0 ) |
^1.2.3 | Accepts 1.2.3 and higher minor and patch versions (1.2.4 , 1.3.1 , 1.4.7 , etc. but not 2.0.0 ) |
>1.2.3 | Must be greater than 1.2.3 |
>=1.2.3 | Must be greater or equal to 1.2.3 |
<1.2.3 | Must be lower than 1.2.3 |
<=1.2.3 | Must be lower or equal to 1.2.3 |
1.2.x | Accepts 1.2.0 , 1.2.1 , etc. but will not accept 1.3.0 |
* | Matches any version (will default to latest ) |
latest | Latest release (default) |
auto | Lookup for any version files in the project directory (.tool-versions or .python-version ) and apply version parsing |
The version also supports the ||
operator to specify ranges. This operator is not compatible with the latest
and auto
keywords. For instance, 1.2.x || >1.3.5 <=1.4.0
will match any version between 1.2.0
included and 1.3.0
excluded, or between 1.3.5
excluded and 1.4.0
included.
The latest version satisfying the requirements will be installed.
Examples
up:
# Will install the latest version of python
- python
# And also
- python: latest
# Let omni lookup for version files in the project
- python: auto
# Will install any version starting with 3.11, and containing
# only dots and numbers after
- python: 3.11
# Will install any version starting with 3, and containing only
# dots and numbers after
- python: 3
# Full specification of the parameter to identify the version;
# this will install any version starting with 3.11.4, and
# containing only dots and numbers after
- python:
version: 3.11.4
# Use that version but only in the some/sub/dir directory
- python:
version: 3.11.4
dir: some/sub/dir
# This will install python 3.11.4 and run
# pip install -r req.txt
- python:
version: 3.11.4
pip: req.txt
# This will install python 3.11.4 and run
# pip install -r requirements.txt for each of dir1 and dir2
- python:
version: 3.11.4
dir:
- dir1
- dir2
pip: auto
# Let omni lookup for version files in the project,
# and run `pip install -r requirements.txt` in each
# of the directories identified with a version file
- python:
version: auto
pip: auto
Dynamic environment
The following variables will be set as part of the dynamic environment.
Environment variable | Operation | Description |
---|---|---|
PATH | prepend | The bin directory for the loaded version of python |
PYTHONHOME | unset | |
VIRTUAL_ENV | set | The path to the python virtual environment |