Packages & __init__.py
A package is a directory containing Python modules. The __init__.py file marks the directory as a package and controls its public interface.
Package Structure
myapp/
__init__.py
models/
__init__.py
user.py
product.py
utils/
__init__.py
validation.py
formatting.py
main.py__init__.py Basics
# myapp/__init__.py
__version__ = "1.0.0"
__author__ = "Alice"
# Expose key classes at the package level
from .models.user import User
from .models.product import ProductImporting from Packages
from myapp.models.user import User
from myapp.utils.validation import validate_email
import myapp.utils.formatting as fmt
# After exposing in __init__.py:
from myapp import User, ProductRelative Imports
# Inside myapp/models/product.py
from .user import User # same package
from ..utils import formatting # parent packageNamespace Packages (Python 3.3+)
# __init__.py is optional in Python 3.3+
# Directory without __init__.py is a namespace package
# Useful for splitting a package across multiple directories