Création d'une structure de package complète
Maintenant que nous comprenons les principes de base des packages Python et le rôle du fichier __init__.py, créons une structure de package plus complète qui suit les meilleures pratiques. Cela vous aidera à organiser efficacement des projets plus volumineux.
Meilleures pratiques pour la structure des packages
Un package Python bien organisé suit généralement cette structure :
package_name/
├── __init__.py
├── module1.py
├── module2.py
├── subpackage1/
│ ├── __init__.py
│ └── module3.py
├── subpackage2/
│ ├── __init__.py
│ └── module4.py
├── README.md
├── setup.py
└── tests/
├── __init__.py
├── test_module1.py
└── test_module2.py
Implémentons une version simplifiée de cette structure pour notre package de calculatrice :
- Créez un fichier README.md :
touch ~/project/calculator_package/README.md
- Ouvrez le fichier README.md dans le WebIDE et ajoutez :
Calculator Package
Un simple package Python qui fournit des fonctions de calculatrice de base et avancées.
Fonctionnalités
- Opérations arithmétiques de base (addition, multiplication)
- Opérations scientifiques avancées (racine carrée, puissance)
Utilisation
from calculator_package import add_two_numbers, multiply_two_numbers
from calculator_package.advanced import square_root, power
## Basic operations
result1 = add_two_numbers(5, 3)
result2 = multiply_two_numbers(4, 2)
## Advanced operations
result3 = square_root(16)
result4 = power(2, 3)
- Créez un répertoire tests :
mkdir ~/project/calculator_package/tests
touch ~/project/calculator_package/tests/__init__.py
- Créez des fichiers de test :
touch ~/project/calculator_package/tests/test_basic.py
- Ouvrez
test_basic.py dans le WebIDE et ajoutez :
import unittest
from calculator_package import add_two_numbers, multiply_two_numbers
class TestBasicOperations(unittest.TestCase):
def test_addition(self):
self.assertEqual(add_two_numbers(5, 3), 8)
self.assertEqual(add_two_numbers(-1, 1), 0)
def test_multiplication(self):
self.assertEqual(multiply_two_numbers(5, 3), 15)
self.assertEqual(multiply_two_numbers(-2, 3), -6)
if __name__ == '__main__':
unittest.main()
- Créez un fichier setup.py pour la distribution du package :
touch ~/project/setup.py
- Ouvrez
setup.py dans le WebIDE et ajoutez :
from setuptools import setup, find_packages
setup(
name="calculator_package",
version="0.1.0",
author="Your Name",
author_email="your.email@example.com",
description="A simple calculator package",
packages=find_packages(),
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires=">=3.6",
)
- Exécutons les tests unitaires :
cd ~/project
python3 -m calculator_package.tests.test_basic
Vous devriez voir une sortie similaire à :
Calculator Package v0.1.0 initialized
..
----------------------------------------------------------------------
Ran 2 tests in 0.001s
OK
Cela confirme que notre package est bien structuré et que les tests fonctionnent correctement.
Documentation du package avec des docstrings
Une bonne documentation est essentielle pour tout package Python. Ajoutons des docstrings appropriées à notre package :
- Mettez à jour le fichier
calculator_package/__init__.py pour inclure une docstring au niveau du package :
"""
Calculator Package - A collection of calculator functions.
This package provides various calculator functions including basic
arithmetic operations and advanced scientific operations.
"""
## Import functions from modules
from .addition import add_two_numbers, add_multiple_numbers
from .multiplication import multiply_two_numbers, multiply_multiple_numbers
## Define package-level variables
__version__ = "0.1.0"
__author__ = "Your Name"
## Print a message when the package is imported
print(f"Calculator Package v{__version__} initialized")
## Import the advanced subpackage
from . import advanced
- Vous pouvez afficher la docstring en utilisant la fonction d'aide de Python :
cd ~/project
python3 -c "import calculator_package; help(calculator_package)"
Cela devrait afficher la documentation du package :
Help on package calculator_package:
NAME
calculator_package - Calculator Package - A collection of calculator functions.
DESCRIPTION
This package provides various calculator functions including basic
arithmetic operations and advanced scientific operations.
PACKAGE CONTENTS
addition
advanced (package)
multiplication
tests (package)
DATA
__author__ = 'Your Name'
__version__ = '0.1.0'
FILE
/home/labex/project/calculator_package/__init__.py
Cette documentation aide les utilisateurs à comprendre le but et les capacités de votre package.