---
title: lightning.fabric.plugins.environments.lightning.LightningEnvironment
description: >-
  The default environment used by Lightning for a single node or free cluster
  (not managed).
canonical: >-
  https://lightning.ai/docs/fabric/stable/full-api-reference/api/generated/lightning.fabric.plugins.environments.lightning.LightningEnvironment
---
# lightning.fabric.plugins.environments.lightning.LightningEnvironment {#lightning-fabric-plugins-environments-lightning-lightningenvironment}

### `class lightning.fabric.plugins.environments.lightning.LightningEnvironment` {#lightning.fabric.plugins.environments.lightning.LightningEnvironment}

Bases: [`ClusterEnvironment`](/docs/fabric/2.6.6/full-api-reference/api/generated/lightning.fabric.plugins.environments.cluster_environment.ClusterEnvironment.md#lightning.fabric.plugins.environments.cluster_environment.ClusterEnvironment "lightning.fabric.plugins.environments.cluster_environment.ClusterEnvironment")

The default environment used by Lightning for a single node or free cluster (not managed).

There are two modes the Lightning environment can operate with:

1.  The user only launches the main process by `python train.py ...` with no additional environment variables set. Lightning will spawn new worker processes for distributed training in the current node.
    
2.  The user launches all processes manually or with utilities like `torch.distributed.launch`. The appropriate environment variables need to be set, and at minimum `LOCAL_RANK`.
    

If the main address and port are not provided, the default environment will choose them automatically. It is recommended to use this default environment for single-node distributed training as it provides a convenient way to launch the training script.

#### `static detect()` {#lightning.fabric.plugins.environments.lightning.LightningEnvironment.detect}

Detects the environment settings corresponding to this cluster and returns `True` if they match.

Return type:

[`bool`](https://docs.python.org/3/builtins/functions.html#bool "(in Python v3.15)")

#### `global_rank()` {#lightning.fabric.plugins.environments.lightning.LightningEnvironment.global_rank}

The rank (index) of the currently running process across all nodes and devices.

Return type:

[`int`](https://docs.python.org/3/builtins/functions.html#int "(in Python v3.15)")

#### `local_rank()` {#lightning.fabric.plugins.environments.lightning.LightningEnvironment.local_rank}

The rank (index) of the currently running process inside of the current node.

Return type:

[`int`](https://docs.python.org/3/builtins/functions.html#int "(in Python v3.15)")

#### `node_rank()` {#lightning.fabric.plugins.environments.lightning.LightningEnvironment.node_rank}

The rank (index) of the node on which the current process runs.

Return type:

[`int`](https://docs.python.org/3/builtins/functions.html#int "(in Python v3.15)")

#### `teardown()` {#lightning.fabric.plugins.environments.lightning.LightningEnvironment.teardown}

Clean up any state set after execution finishes.

Return type:

[`None`](https://docs.python.org/3/builtins/constants.html#None "(in Python v3.15)")

#### `world_size()` {#lightning.fabric.plugins.environments.lightning.LightningEnvironment.world_size}

The number of processes across all devices and nodes.

Return type:

[`int`](https://docs.python.org/3/builtins/functions.html#int "(in Python v3.15)")

#### `property creates_processes_externally: bool` {#lightning.fabric.plugins.environments.lightning.LightningEnvironment.creates_processes_externally}

Returns whether the cluster creates the processes or not.

If at least `LOCAL_RANK` is available as environment variable, Lightning assumes the user acts as the process launcher/job scheduler and Lightning will not launch new processes.

#### `property main_address: str` {#lightning.fabric.plugins.environments.lightning.LightningEnvironment.main_address}

The main address through which all processes connect and communicate.

#### `property main_port: int` {#lightning.fabric.plugins.environments.lightning.LightningEnvironment.main_port}

An open and configured port in the main node through which all processes communicate.

---

**Navigation**

- Parent: [Generated](/docs/fabric/2.6.6/full-api-reference/api/generated.md)
