Difference between a python module and a package

February 20, 2019


Modules are single Python files that can be imported. Any python file can be a module. For example, if I have two Python files: module.py and hello.py in the same directory:

# module.py

def hello(name):
    print("Hello {}".format(name))

I can import that module in my hello.py:


import module

module.hello("World!") # Hello World!

The same can be done in the interpreter:

>>> from module import hello
>>> hello("World!") # Hello World!


Packages are made up of multiple Python files (or modules), and can even include libraries written in different languages like C or C++. Seeing an __init.py__ file in a folder typically tells you that that folder is a Python package. The __init__.py doesn't have to contain any code -- sometimes it does -- it just has to be there for Python take that particular folder as a package.

📁 my_package
    |- __init__.py
    |- module.py
# __init.py__

from my_package.module import hello

When you import my_package in your script, the __init__.py script will be run, giving you access to all of the functions in the package. In this case, it only gives access to the module.hello function.