Das richtige Aufsetzen eines Python Moduls

Irgendwie bin ich bei dem Thema ein regelmäßiger Totalversager, irgendwie geht's immer schief, darum hier mal der Versuch, mal ein korrektes Kochbuch zu schreiben…

Diese Aufzaählung beschreibt nur den Minimalzustand, insgesamt geht da noch einiges mehr…

Nehmen wir also mal an, wir haben planen ein Modul (hier genannt pacman) bestehend aus mehreren Dateien, dann legen wir im Projektverzeichnis erstmal ein Verzeichnis an, was so heißt wie das geplante Modul selber. Da kopieren wir dann die Dateien hinein, die zum Modul gehören.

Das sieht dann ungefähr so aus

.
| README.md
| setup.py
|
+---pacman
| ecdsa_manager.py
| file.py
| pack.py
| pacman.py
| releases.py
| __init__.py

Zum einen muss im pacman Verzeichnis eine mindestens leere __init__.py Datei sein, damit Python das Ganze als Modul anerkennt.

Was Python sonst noch (mindestens) wissen muss, wird durch die Datei setup.py im Hauptverzeichnis geregelt:

from setuptools import setup, find_packages setup( name="pacman", version="0.0.1", description="tools to generate ecdsa signed zip archives", license="MIT", packages=find_packages(include=['pacman', 'pacman.*']), install_requires=[ "oyaml", "canonicaljson", "ecdsa" ], author="Steffen Köhler", author_email="steffen@koehlers.de", keywords=["pacman","edsa","zip"], url="https://myprepositoryrovider/pacman", )

Die Magie liegt erstmal in der packages=find_packages() Zeile.

Hier sagt man dem Setup, wo die Moduldateien liegen. Und wenn man sich bis hier durchgekämpft hat, dann geht's (erstmal…)