Table of Contents
Das 101 der Python-Pakete
Momentan jonglieren wir mit PYTHONPATH, um unsere gesamten Module zusammenzuführen. Das ist ein heilloses durcheinander und führt zu Fehlern und unnützer Fehlersuche. Ziel ist es, ein Workflow zu definieren, der einen einfachen Umgang mit Paketen erlaubt.
Erste Schritte
Ein Paketname ist notwendig, z.B. “shopupdate”. Namen sollten keine Sonderzeichen und/oder Trennzeichen enthalten. Das git muss dann einen Unterordner enthalten, der genau diesen Namen trägt. Bsp: “shopUpdate/shopupdate”, dort werden dann alle Ordner und *.py-Dateien eingebunden. Die Vorarbeit ist damit abgeschlossen.
Es wird eine “setup.py” benötigt, die die setuptools von Python anspringt:
from setuptools import setup PACKAGE = "shopupdate" setup(name=PACKAGE, version='0.1', description='Peng', author='picalieke', author_email='picalieke@localhost', zip_safe=False, packages=[PACKAGE])
Verpackung
Als sehr einfache Variante nutzen wir ein 2-Schritt-System.
<HTML><ol></HTML>
- Wir erzeugen einen Tarball mit den notwendigen Dateien
$ python setup.py sdist
, der wandert in das Verzeichnis dist - Den Tarball kopieren wir auf eine entfernte Maschine, wo dieser ausgepackt wird und lokal installiert wird
$ python setup.py install –prefix=~/.local
<HTML></ol></HTML>
Ab dann kann in python das Modul eingebunden werden, ohne das der PYTHONPATH angepasst werden muss.
from shopupdate.feed_parser import FeedParser
Skripte
Konfiguration und Skripte sind nicht im Modul enthalten, da diese vertrauliche Daten und/oder dynamisches mit sich bringen. Im Fall von shopupdate, muss folgende Verzeichnisstruktur lokal angelegt werden:
shopUpdate scripts settings
in scripts landet das “Programm”, dass das Modul verwendet, ggf. ein Wrapper, der einfach die main() aus dem Modul aufruft, dann mit entsprechenden Pfaden für die Konfiguration. In settings liegen dann die Konfigurationsdateien, für die spezielle Maschine.
Hinweise
Das Setup ist ultra-minimal, d.h. nur ein Skelett, für die wichtigsten Funktionen. Der Rest, Doku einbinden, etc. sollte alles nach und nach hier dokumentiert werden.