Python
Pulumi supports programs written in Python 3. Python version 3.6 or later is required.
Getting Started
The fastest way to get started with Pulumi Python is by using a template. From an empty directory in which you’d like to create a new project:
$ mkdir myproject && cd myproject
$ pulumi new pythonThis creates a Pulumi.yaml file, containing minimal metadata about your project (including a name and description, which you may wish to change), a requirements.txt file, where you will specify your dependencies (see Using Pulumi PyPI Packages below), and a __main__.py file, containing your program.
Although the template uses a very simple package structure, by placing __main__.py in the root directory, Pulumi fully supports properly modularized Python programs and setup.py files. This is important if you ever decide to turn your Pulumi program into a library.
Pulumi looks for a python3 executable to use on PATH. If not found, it looks for a python executable. It expects the executable it finds to refer to Python 3.6 or above. This can be overridden by explicitly setting the PULUMI_PYTHON_CMD environment variable to the name of the Python executable to use.
Using Pulumi PyPI Packages
Virtual Environments
It is not required, but we recommend using a virtual environment to isolate the dependencies of your projects and ensure reproducibility between machines.
As of Pulumi 2.4.0, new Python projects created with pulumi new will have a virtual environment created in a venv directory with required dependencies from requirements.txt installed in it, and Pulumi will automatically use this virtual environment when running the program.
This behavior is controlled by the following virtualenv runtime option in Pulumi.yaml:
runtime:
name: python
options:
virtualenv: venvvirtualenv is the path to a virtual environment to use.
Existing Python projects can opt-in to using the built-in virtual environment support by setting the virtualenv option. To manually create a virtual environment and install dependencies, run the following commands in your project directory:
$ python3 -m venv venv
$ venv/bin/pip install -r requirements.txt$ python3 -m venv venv
$ venv/bin/pip install -r requirements.txt> python -m venv venv
> venv\Scripts\pip install -r requirements.txtIf you prefer to manage the virtual environment on your own (for example, using tools like Pipenv), you can delete the local venv directory and unset the virtualenv option in Pulumi.yaml:
runtime: pythonWhen managing the virtual environment on your own, you’ll need to run any pulumi commands (such as pulumi up) from an activated virtual environment shell (or, if using a tool like Pipenv, prefix any pulumi commands with pipenv run pulumi ...).
Adding a new dependency
There are many available Pulumi Python packages.
To install a new dependency in the virtual environment, add an entry to requirements.txt, and run the following in your project directory:
$ venv/bin/pip install -r requirements.txt$ venv/bin/pip install -r requirements.txt> python -m venv venv
> venv\Scripts\pip install -r requirements.txt