Python-Programme ausliefern/verteilen - Wohin mit Modulen?

Probleme bei der Installation?
Antworten
DarkHappyAffe
User
Beiträge: 1
Registriert: Dienstag 6. Januar 2009, 14:04

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?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

DasIch hat geschrieben: /opt ist imho keine befriedigende Lösung.
Warum nicht?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten