Seite 1 von 1

Python-Programme ausliefern/verteilen - Wohin mit Modulen?

Verfasst: Dienstag 6. Januar 2009, 14:25
von DarkHappyAffe
Moin,

ich streite mich gerade mit einem Kollegen, wie man Python Anwendungen am besten verteilt. Es geht im Wesentlichen darum, wo die Unter-Module einer Anwendung landen sollen, die zwar von der Anwendung gebraucht werden, aber anderen Anwendungen nicht zur Verfügung stehen sollen.

Er ist der Meinung, alles muss in ein Root-Modul und das wird dann in die site-packages installiert. Und die application.py (oder je nach Plattform eine Binärdatei) können dann unter Programme oder /usr/local/bin oder sonst wo liegen. Ordnerstruktur wäre dann wie folgt:

Code: Alles auswählen

/application/
    modul1/
    ...
    modulN/
    .__init__.py
/application.py
Das Modul application würde dann in den site-packages landen und appliaction.py im Standard-Programme-Ordner.

Meiner Meinung nach gehören in die site-packages aber nur Bibliotheken und Frameworks (wie SimPy, matplotlib oder PyQt). Die Module, die man für die eigene Anwendung geschrieben hat, landen mit im Anwendungsordner. Beispiel-Ordnerstruktur:

Code: Alles auswählen

/application/
    modul1/
    ...
    modulN/
    application.py
Und das Ganze kommt dann nach /Applications, /opt oder C:\Programme.

Hab dazu bisher leider keine eindeutigen Empfehlungen gefunden. Gibt es überhaupt welche? Wie würdet ihr das machen?

Verfasst: Dienstag 6. Januar 2009, 16:12
von DasIch
Das ist so eine Glaubensfrage auf die es keine eindeutige Antwort gibt. Ich persönlich würde es aber schon besser finden wenn eine Anwendung nicht site-packages zu müllt sondern sowas nach /usr/lib packt, den /opt ist imho keine befriedigende Lösung.

Verfasst: Dienstag 6. Januar 2009, 16:48
von numerix
DasIch hat geschrieben: /opt ist imho keine befriedigende Lösung.
Warum nicht?

Verfasst: Dienstag 6. Januar 2009, 17:12
von DasIch
Das Dateisystem Layout des vom User gewählten Betriebssystems sollten imho alle Programme respektieren und opt dafür zu Missbrauchen seine Software reinzuschmeissen nur weil man sich nicht dem dem Layout beschäftigen will ist keine Lösung.

Verfasst: Dienstag 6. Januar 2009, 17:19
von Leonidas
Ich würde alle Module die zur Applikation gehören in einen Ordner in site-packages packen lassen (so wie die distutils das eben machen) und dann das Startskript in ``/usr/bin`` oder wo halt der Executable-Path ist, den sich der User wünscht (wie es distutils eben machen). Externe Pakete würde ich einfach als Dependencies in der ``setup.py`` deklarieren (wie es setuptools eben machen) und wäre dann fertig. Das ist so das Standardsetup, was so ziemlich für jedes Python-Paket zutrifft (also ähnlich wie ``./configure``, ``make`` und ``make install`` bei C-Programmen, die Autotools nutzen).