Module is a Python source code file, i.e. a file with .py extension.
Package is a directory which contains
__init__.pyfile and can contain python modules and other packages.
Let's use the following directory structure as an example:
food_store/ __init__.py product/ __init__.py fruit/ __init__.py apple.py banana.py drink/ __init__.py juice.py milk.py beer.py cashier/ __ini__.py receipt.py calculator.py Let's consider that banana.py file contains:
def get_available_brands(): return ["chiquita"] class Banana: def __init__(self, brand="chiquita"): if brand not in get_available_brands(): raise ValueError(f"Unknown brand: {brand}") self._brand = brand Let's say that we need access Banana class from banana.py file inside receipt.py. We can achive this by importing at the beginning of receipt.py:
from food_store.product.fruit.banana import Banana # then it's used like this my_banana = Banana() If we need to access multiple classes or functions from banana.py file:
from food_store.product.fruit import banana # then it's used like this brands = banana.get_available_brands() my_banana = banana.Banana() A comprehensive introduction to modules and packages can be found here.