python-terraform
This is a python module provide a wrapper of terraform command line tool
What it is and what it does
python-terraform is a thin wrapper around the Terraform CLI that lets you run Terraform commands from Python code instead of shell scripts. It handles argument and option mapping (converting Python method calls and keyword arguments into Terraform CLI syntax) and captures stdout, stderr, and return codes for programmatic inspection. The wrapper supports all Terraform commands and provides special handling for flag-style options, boolean values, and multi-value parameters like `-target` and `-var`.
You instantiate a Terraform object, optionally specifying a working directory and default variables, then call methods named after Terraform commands (e.g., `.apply()`, `.plan()`, `.destroy()`). The package handles the syntactic quirks of Terraform's option design—distinguishing between flag-style options (like `-no-color`) and value options (like `-refresh=true`)—so you don't have to construct command strings manually. By default it captures output; you can disable capture to see real-time output in the terminal.
Use it for:
- Automate infrastructure provisioning workflows in Python applications without shelling out to Terraform directly.
- Build CI/CD pipelines that apply or plan Terraform configurations and parse the results programmatically.
- Wrap Terraform operations in Python error handling and logging for better observability.
- Generate Terraform commands dynamically based on runtime configuration and pass them through the wrapper.
- Test Terraform configurations by running plan/validate commands and inspecting their output from Python.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Wraps the Terraform command-line tool, allowing you to invoke Terraform operations (apply, plan, destroy, import, etc.) directly from Python code and capture their output.
Yes, if you need to invoke Terraform from Python and can tolerate aging maintenance. The package is stable and has no known vulnerabilities, but the last release was 2019-06-21. It works for basic Terraform automation, but verify compatibility with your Terraform version and Python environment before production use. High install friction (requires Terraform on PATH) is expected for this use case.
Install
python-terraform on PyPI
pip
pip install python-terraformuv
uv add python-terraformpoetry
poetry add python-terraformInstalling python-terraform
Before you install
High install friction: no runtime dependencies but requires Terraform itself to be installed and available on the system PATH. Maintenance is aging—last release was 2019-06-21, though the repository remains active with recent commits (2025-09-04). Beta-status package with modest adoption.
License in practice
MIT license is permissive, imposing no significant restrictions on use or redistribution. You can use this package freely in commercial and private projects.
Quickstart
from python_terraform import Terraform, IsFlagged
tf = Terraform(working_dir='/path/to/terraform')
return_code, stdout, stderr = tf.apply(no_color=IsFlagged, refresh=False, var={'key': 'value'})
Terraform must be installed and available on the system PATH for this wrapper to function.
Verify before relying
- Whether the package works reliably with modern Terraform versions (last release 2019-06-21).
- Python version compatibility beyond classifiers (Python 2 and 3 listed, but Python 2 is end-of-life).
- Whether real-time output capture (capture_output parameter) works as documented across all platforms.
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | high — source build required |
| Runtime dependencies | none |
| Maintenance | aging — 2,611 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 236,851/month — #8,973 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: python-terraform-0.10.1.tar.gz
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
tftestWraps the Terraform executable to facilitate…
permissive · top 15,000 on PyPI
EasyProcessEasyProcess wraps Python's subprocess module to…
permissive · top 5,000 on PyPI
cdktfDefines cloud infrastructure using Python code…
copyleft · top 15,000 on PyPI
python-vagrantProgrammatic control of Vagrant virtual…
permissive · top 5,000 on PyPI
terraform-localA wrapper script that runs Terraform against…
permissive · top 15,000 on PyPI
scripttestscripttest runs command-line applications in…
permissive · top 15,000 on PyPI
terraform-complianceterraform-compliance is a BDD-based test…
permissive · top 15,000 on PyPI
tfparsetfparse parses and evaluates Terraform HCL…
permissive · top 15,000 on PyPI
python-hcl2Parses HCL2 configuration files (used by…
permissive · top 5,000 on PyPI
codemagic-cli-toolsProvides command-line and Python API tools for…
copyleft · top 5,000 on PyPI