Python is a versatile programming language, and one of its strengths is the ease with which you can create reusable modules and packages. Whether you’re working on a personal project or developing for a team, knowing how to create a Python module or package can make your code more organized, reusable, and sharable. In this post, we’ll walk through the steps to create your own Python module and package.
What is a Python Module?
A Python module is simply a file containing Python code. The file has a .py
extension and may include functions, classes, or variables that you can import and use in other scripts.
Example: Creating a Simple Module
Create a file named math_utils.py
:
# math_utils.py
def add(a, b):
return a + b
def subtract(a, b):
return a – b
def multiply(a, b):
return a * b
def divide(a, b):
if b != 0:
return a / b
raise ValueError(“Division by zero is not allowed.”)
You can now import this module in another script:
# main.py
import math_utils
result = math_utils.add(5, 3)
print(“The sum is:”, result)
What is a Python Package?
A Python package is a collection of modules organized in a directory structure. A package must contain an __init__.py
file, which can be empty or include initialization code for the package.
Example: Creating a Package
- Create the directory structure:
my_package/
__init__.py
math_utils.py
string_utils.py
2. Write the module files:
-
math_utils.py
:
def add(a, b):
return a + b
def subtract(a, b):
return a – b
-
string_utils.py
:
def to_uppercase(s):
return s.upper()
def to_lowercase(s):
return s.lower()
- Initialize the package:
The __init__.py
file makes the directory a package. You can leave it empty or use it to expose specific functionality:
from .math_utils import add, subtract
from .string_utils import to_uppercase, to_lowercase
4. Use the package in your code:
# main.py
from my_package import add, to_uppercase
print(add(10, 5)) # Output: 15
print(to_uppercase(“hello”)) # Output: HELLO
Installing Your Package with pip
To make your package installable with pip
, you need to create a setup.py
file in your package directory:
# setup.py
from setuptools import setup, find_packages
setup(
name=”my_package”,
version=”0.1″,
packages=find_packages(),
description=”A simple example package”,
author=”Your Name”,
author_email=”[email protected]”,
url=”https://github.com/yourusername/my_package”,
classifiers=[
“Programming Language :: Python :: 3”,
“License :: OSI Approved :: MIT License”,
“Operating System :: OS Independent”,
],
python_requires=’>=3.6′,
)
To install the package locally:
pip install .
Testing Your Package
It’s a good practice to include tests for your package. You can use unittest
or other testing frameworks like pytest
.
Example Test File
Create a tests
directory:
my_package/
tests/
test_math_utils.py
Write a test in test_math_utils.py
:
import unittest
from my_package.math_utils import add, subtract
class TestMathUtils(unittest.TestCase):
def test_add(self):
self.assertEqual(add(2, 3), 5)
def test_subtract(self):
self.assertEqual(subtract(5, 3), 2)
if __name__ == ‘__main__’:
unittest.main()
Run the tests:
python -m unittest discover -s my_package/tests
Sharing Your Package
You can publish your package to PyPI (Python Package Index) to make it available for others to install via pip
.
- Build the distribution:
python setup.py sdist bdist_wheel
2. Install Twine:
pip install twine
3. Upload to PyPI:
twine upload dist/*
Now anyone can install your package:
pip install my_package
Creating Python modules and packages is a straightforward process that can greatly enhance code reuse and maintainability. By organizing your code into modules and packages, you can make it easier to understand, test, and share. Follow the steps above, and you’ll be on your way to creating robust Python projects!