Registry / devops / python-terraform

python-terraform

JSON →
library0.10.1pypiunverified

python-terraform is a Python module that provides a wrapper around the Terraform command-line interface (CLI) tool. It allows Python programs to execute Terraform commands (e.g., init, plan, apply, destroy) and capture their output, enabling programmatic interaction with infrastructure as code workflows. The library's latest release, 0.14.0, focuses on compatibility with newer Terraform CLI versions. It follows an irregular release cadence, typically releasing new versions to support significant changes in the Terraform CLI.

pip install python-terraform
INSTALL
IMPORT
SIG · PYTHON-TERRAFORM
P
python-terraform
devopsenv0.10.1
Install
2.4s avg
Import
42ms
Disk
17MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v0.10.1 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.910 runs
installs and imports cleanly · install 0.0s · import 0.044s · 19.2MB
glibc
py 3.103.910 runs
installs and imports cleanly · install 2.4s · import 0.040s · 20MB
17MB installed
● package 17MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

Terraform
from python_terraform import Terraform
While 'from python_terraform import *' is often shown in examples, explicit import of 'Terraform' is generally preferred for clarity and avoiding namespace pollution.

This quickstart demonstrates how to initialize, plan, apply, and destroy a simple Terraform configuration using `python-terraform`. It creates a minimal `main.tf` file and then interacts with it programmatically. `capture_output=True` is used to see the real-time output, and `skip_plan=True` and `force=True` are crucial for non-interactive execution of `apply` and `destroy` respectively.

import os from python_terraform import Terraform # Create a dummy Terraform configuration file for demonstration # In a real scenario, this would be an existing main.tf file. terraform_dir = "./my_terraform_project" os.makedirs(terraform_dir, exist_ok=True) with open(os.path.join(terraform_dir, "main.tf"), "w") as f: f.write('resource "null_resource" "example" {}') tf = Terraform(working_dir=terraform_dir) # Initialize Terraform return_code, stdout, stderr = tf.init() print(f"Init Output:\n{stdout}\n{stderr}") if return_code != 0: print("Terraform Init failed!") exit(1) # Plan the changes return_code, stdout, stderr = tf.plan(capture_output=True, no_color=True) print(f"Plan Output:\n{stdout}\n{stderr}") # Apply the changes (skip_plan=True prevents interactive prompt) return_code, stdout, stderr = tf.apply(skip_plan=True, capture_output=True, no_color=True) print(f"Apply Output:\n{stdout}\n{stderr}") # Destroy the infrastructure return_code, stdout, stderr = tf.destroy(force=True, capture_output=True, no_color=True) print(f"Destroy Output:\n{stdout}\n{stderr}")
terraform --version
Debug
Known issues
breakingVersion 0.14.0 of `python-terraform` introduces support for Terraform CLI versions 0.14 and newer. Older versions of `python-terraform` may not be fully compatible with recent Terraform CLI releases, especially concerning changes in output formats or command-line arguments (e.g., changes for Terraform 0.12+).
fix
Ensure your `python-terraform` library version is compatible with your installed Terraform CLI version. Upgrade `python-terraform` to 0.14.0 or newer for Terraform CLI versions 0.14+.
affects: <0.14.0
gotchaBy default, `python-terraform` captures `stdout` and `stderr` from Terraform commands, which can make long-running operations appear to hang until completion. To see real-time output, you must explicitly pass `capture_output` with any non-`None` value (e.g., `True`).
fix
When calling Terraform methods, include `capture_output=True` in the arguments to stream output directly to the console in real-time. Example: `tf.apply(capture_output=True, ...)`.
affects: All versions
gotchaTerraform CLI commands like `apply` and `destroy` are interactive by default, requiring user confirmation. Running these commands without suppressing interaction in a script will cause the process to hang.
fix
For `tf.apply()`, use `skip_plan=True`. For `tf.destroy()`, use `force=True`. These flags tell Terraform to proceed without user input. Example: `tf.apply(skip_plan=True)` and `tf.destroy(force=True)`.
affects: All versions
Errors
Common errors & fixes
FileNotFoundError: [Errno 2] No such file or directory: 'terraform'
The Terraform CLI executable is not installed on the system or is not present in the system's PATH environment variable.
fix
Install the Terraform CLI for your operating system and ensure its installation directory is added to your system's PATH. Verify by running `terraform version` in your terminal.
Terraform Init failed! (or similar errors during plan/apply related to provider plugins)
The Terraform working directory specified in `Terraform(working_dir=...)` does not contain valid Terraform configuration files (`.tf`), or `terraform init` was not run successfully, or there's an issue with the Terraform configuration itself (e.g., missing provider definitions, syntax errors).
fix
Ensure the `working_dir` points to a valid Terraform root module. Always run `tf.init()` first. Debug the underlying Terraform configuration by manually running `terraform init` and `terraform plan` in the specified directory to identify configuration errors. You can also inspect the `stdout` and `stderr` returned by `tf.init()` for detailed error messages.
Command 'terraform apply' did not return 0. Real-time output not visible.
The `terraform apply` command failed, but because `capture_output=True` was not set, the live error messages were not streamed to the console, making debugging difficult. The underlying Terraform command may have failed due to validation errors, provider issues, or unexpected infrastructure state.
fix
Always pass `capture_output=True` to Terraform methods if you need to see real-time output for debugging. Inspect the `stdout` and `stderr` variables returned by the method call for the full error details after execution.
Upgrade
Version history
0.10.1latest on PyPI · released Jun 21, 2019
Audit
Dependencies
Terraform CLIrequiredThis library wraps the Terraform command-line tool, which must be installed and accessible in the system's PATH.
Agent activity
4 hits · last 30 days
node
4
Resources

No resource links recorded.

python-terraform — pip install python-terraform · libregistry