Creating Packages (__init__.py)
A package is a directory of modules with an __init__.py file. Packages help organize large codebases into logical hierarchies.
15 min•By Priygop Team•Updated 2026
Packages
Packages
# Package structure:
# myproject/
# __init__.py # makes it a package
# utils.py # module
# database/
# __init__.py # sub-package
# connection.py
# models.py
# api/
# __init__.py
# routes.py
# middleware.py
# __init__.py can be empty or configure imports:
# ---- myproject/__init__.py ----
# from .utils import helper_function
# from .database import connect
# __all__ = ["helper_function", "connect"]
# Importing from packages:
# from myproject import helper_function
# from myproject.database import connect
# from myproject.api.routes import router
# Demo: simulating a package structure
class Package:
"""Demonstrates package organization"""
class Utils:
@staticmethod
def format_currency(amount):
return f"${amount:,.2f}"
class Database:
@staticmethod
def connect():
return "Connected to DB"
class API:
@staticmethod
def get_users():
return [{"id": 1, "name": "Alice"}]
# Usage
print(Package.Utils.format_currency(1234567.89))
print(Package.Database.connect())
print(Package.API.get_users())Tip
Tip
Add __init__.py to make a directory a package. Use relative imports within packages: from .utils import helper.
Diagram
Loading diagram…
Module = file, Package = folder + __init__.py, Library = pip.
Common Mistake
Warning
Missing __init__.py in Python 3 still works (namespace packages), but explicit __init__.py is clearer and recommended.
Quick Quiz
Practice Task
Note
(1) Create a package with __init__.py. (2) Add sub-modules. (3) Export key functions in __init__.py.