1. Docs
  2. Languages & SDKs
  3. Python

Pulumi & Python

    Pulumi supports writing your infrastructure as code in the Python language running on any supported version.

    Install Python. To reduce potential issues with setting up your Python environment on Windows or macOS, you should install Python through the official Python installer.

    pip is required to install dependencies. If you installed Python from source, with an installer from python.org, or via Homebrew you should already have pip. If Python is installed using your OS package manager, you may have to install pip separately, see Installing pip/setuptools/wheel with Linux Package Managers. For example, on Debian/Ubuntu you must run sudo apt install python3-venv python3-pip.

    If you're having trouble setting up Python on your machine, see Python 3 Installation & Setup Guide for detailed installation instructions on various operating systems and distributions.

    Pulumi Programming Model

    The Pulumi programming model defines the core concepts you will use when creating infrastructure as code programs using Pulumi. Concepts describes these concepts with examples available in Python. These concepts are made available to you in the Pulumi SDK.

    The Pulumi SDK is available to Python developers as a Pip package distributed on PyPI. To learn more, refer to the Pulumi SDK Reference Guide.

    The Pulumi programming model includes a core concept of Input and Output values, which are used to track how outputs of one resource flow in as inputs to another resource. This concept is important to understand when getting started with Python and Pulumi, and the Inputs and Outputs documentation is recommended to get a feel for how to work with this core part of Pulumi in common cases.

    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:

      name: python
        virtualenv: venv

    virtualenv 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.txt

    If you prefer to manage the virtual environment on your own (for example, using a tool like Pipenv), you can delete the local venv directory and unset the virtualenv option in Pulumi.yaml:

    runtime: python

    When 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 Pulumi Python packages available.

    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
    > venv\Scripts\pip install -r requirements.txt

    Package Documentation

    In addition to the standard packages the Pulumi Registry houses 100+ Python packages.

    Standard Packages

    Pulumi SDK
    Pulumi Policy
    Pulumi Terraform
      Pulumi AI - What cloud infrastructure would you like to build? Generate Program