# __main__.py file in a project

By Corey J. Gallon · 2024-10-15 · https://gallon.me/__main__py-file-in-a-project.html

---

This is, to a Python project / module, what `if __name__ == '__main__` is to an individual Python file.

In Python projects, a `__main__.py` file is used to define what happens when a package or module is run directly as a script. It allows you to make the package executable from the command line, similar to how you would run a single Python script.

Here’s how it works:

1. **Executed when the package is run as a script**: When you run a package like this:

```
python -m package_name

```

The `__main__.py` file inside the package is executed, just like a script. This is similar to how a `main()` function works in other programming languages.
    
2. **Entry point for a package**: It serves as an entry point to the package’s functionality. You can add logic here that should be executed when the package is run.
3. **Example Structure**:
    
```
my_package/
├── __init__.py
├── __main__.py
├── module1.py
└── module2.py

```

If you run:

```
python -m my_package

```

Python will execute the `__main__.py` file in `my_package`.
    
4. **Typical Use Case**: It’s often used to bootstrap or run the application, e.g., starting a server, running an app, or triggering some core functionality when the package is invoked from the command line.

For example, in a `__main__.py` file, you might have:

```python
def main():
    print("Running the application!")

if __name__ == "__main__":
    main()

```

This ensures that the package can be run both as a standalone script or imported as a module without accidentally triggering the main execution logic.
