Skip to content

What is init.py for?

__init__.py is a special Python file that is used to indicate that the directory it is present in is a Python package. It can contain initialization code for the package, or it can be an empty file.

Packages are a way to structure Python's module namespace by using "dotted module names". For example, the module name A.B designates a submodule named B in a package named A.

You might have a directory structure like this:


console
mypkg/
    __init__.py
    module1.py
    module2.py
    subpkg/
        __init__.py
        submodule1.py
        submodule2.py

Here, mypkg is a package that contains two modules: module1 and module2. It also contains a subpackage, subpkg, which itself contains two modules: submodule1 and submodule2.

You can then import these modules and submodules using the dotted notation:

Import modules and submodules from a directory in Python

python
import mypkg.module1
import mypkg.subpkg.submodule1

The __init__.py file can contain code to initialize the package when it is imported, for example by loading data or setting up logging. It can also be left empty.

Initialize a package when it is imported, using a __init__ file

python
# __init__.py

import logging

logging.basicConfig(level=logging.INFO)
log = logging.getLogger(__name__)

log.info('Initializing mypkg')

This __init__.py file will run when you import mypkg, setting up the package's logger.

A __init__ file example in Python

python
import mypkg

# This will log 'Initializing mypkg'

Dual-run preview — compare with live Symfony routes.