---
title: Enable Dynamic Instrumentation for Python
description: >-
  Set up Dynamic Instrumentation for Python applications to add probes and
  capture data without code changes.
breadcrumbs: >-
  Docs > APM > Application Instrumentation > Dynamic Instrumentation > Enabling
  Dynamic Instrumentation > Enable Dynamic Instrumentation for Python
---

# Enable Dynamic Instrumentation for Python

{% callout %}
# Important note for users on the following Datadog sites: app.ddog-gov.com, us2.ddog-gov.com

{% alert level="danger" %}
This product is not supported for your selected [Datadog site](https://docs.datadoghq.com/getting_started/site.md). ().
{% /alert %}

{% /callout %}

Dynamic Instrumentation is a feature of the Datadog SDK that lets you add instrumentation to your application at runtime without code changes or redeployments. Follow these instructions to set up Dynamic Instrumentation for Python.

## Prerequisites{% #prerequisites %}

Before you begin, review the [Dynamic Instrumentation prerequisites](https://docs.datadoghq.com/dynamic_instrumentation.md#prerequisites). Python applications also require:

- Tracing library [`ddtrace`](https://github.com/DataDog/dd-trace-py) version 2.2.0 or higher. See the [installation instructions](https://docs.datadoghq.com/tracing/trace_collection/dd_libraries/python.md) for setup details.

## Installation{% #installation %}

1. If you don't already have APM enabled, in your Agent configuration, set the `DD_APM_ENABLED` environment variable to `true` and listening to the port `8126/TCP`.

1. Install `ddtrace`, which provides both tracing and Dynamic Instrumentation:

   ```shell
   pip install ddtrace
   ```

1. Run your service with Dynamic Instrumentation enabled by setting the `DD_DYNAMIC_INSTRUMENTATION_ENABLED` environment variable to `true`. Specify `DD_SERVICE`, `DD_ENV`, and `DD_VERSION` Unified Service Tags so you can filter and group your instrumentations and target active clients across these dimensions.

   {% tab title="Environment variables" %}
Invoke your service:

   ```shell
   export DD_SERVICE=<YOUR_SERVICE>
   export DD_ENV=<YOUR_ENV>
   export DD_VERSION=<YOUR_VERSION>
   export DD_DYNAMIC_INSTRUMENTATION_ENABLED=true
   ddtrace-run python -m myapp.py
   ```

      {% /tab %}

   {% tab title="In code" %}

   ```python
   import os
   
   os.environ["DD_DYNAMIC_INSTRUMENTATION_ENABLED"] = "true"
   
   import ddtrace.auto  # IMPORTANT: this must be imported as soon as possible.
   ```

   {% /tab %}



1. After starting your service with Dynamic Instrumentation enabled, you can start using it on the [APM > Dynamic Instrumentation page](https://app.datadoghq.com/dynamic-instrumentation).

## Configuration{% #configuration %}

Configure Dynamic Instrumentation using the following environment variables:

| Environment variable                 | Type    | Description                                                                                                                       |
| ------------------------------------ | ------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `DD_DYNAMIC_INSTRUMENTATION_ENABLED` | Boolean | Set to `true` to enable Dynamic Instrumentation.                                                                                  |
| `DD_SERVICE`                         | String  | The [service](https://docs.datadoghq.com/getting_started/tagging/unified_service_tagging.md) name, for example, `web-backend`.    |
| `DD_ENV`                             | String  | The [environment](https://docs.datadoghq.com/getting_started/tagging/unified_service_tagging.md) name, for example, `production`. |
| `DD_VERSION`                         | String  | The [version](https://docs.datadoghq.com/getting_started/tagging/unified_service_tagging.md) of your service.                     |
| `DD_TAGS`                            | String  | Tags to apply to produced data. Must be a list of `<key>:<value>` separated by commas such as: `layer:api, team:intake`.          |

## What to do next{% #what-to-do-next %}

See [Dynamic Instrumentation](https://docs.datadoghq.com/dynamic_instrumentation.md) for information about adding instrumentations and browsing and indexing the data.

## Further reading{% #further-reading %}

- [Getting Started with Datadog Agent](https://docs.datadoghq.com/agent.md)
