bogomip hat geschrieben:1) Wenn mein Programm fertig ist, wie gebe ich es am besten weiter? Mit oder ohne Installationsroutine?
Standardmäßig verwendet man die distutils, um Python-Programme weiterzugeben. Mit ein paar Hacks lassen sich dann unter Windows auch .exe-Dateien erstellen.
Unter Linux ist "python setup.py install" wohl üblich, zumal bei Verwendung dieser Infrastruktur sehr einfach Pakete gebaut werden können. Unter Gentoo z.B. ist ein Standar-Distutils-Ebuild nicht länger als 10 Zeilen.
Unter Windows dagegen würde ich neben der Source-Distribution für Erfahrene auch eine Installer-Datei anbieten, die gleich Python und die benötigten Module mitbringt.
2) Folge aus 1): Wie sind dann die Pfade? Angenommen ich lade im Programm ein Bild, kann bzw. muss ich dann nur relative Pfade benutzen? Denn der User hat das .py ja sicher nicht im gleichen Verzeichnis, wie ich.
Die distutils bieten dafür package_data an, wodurch die Daten innerhalb eines Verzeichnisses unterhalb der Paketstruktur zu liegen kommt. Dann kann man Daten so laden:
Code: Alles auswählen
import os
module_directory = os.path.dirname(os.path.abspath(__file__))
image = os.path.join(module_directory, 'images', 'myimage.png')
3) Oder kann ich das alles in einer config-Datei Speichern? Dann würde beim FirstRun ein kleiner Assistent alle Daten erfassen und in eine Datei speichern.
Das ist eher unüblich.
4) Macht man grundsätzlich von so config-Dateien Gebrauch? Ich müsste einige Werte meines Programms darin speichern. Wie geht man sowas an? Ganz normal über Datei-E/A? Und in welchem Verzeichnis am cleversten?
Das kommt darauf an. Unter Windows liegen systemweite Konfigurationsdateien in der Regel im Anwendungsverzeichnis, unter Linux unterhalb von /etc. Diese Dateien sollte man nur Laden, die Anwendung sollte in diese Dateien nichts schreiben, da man sonst Root-Privilegien bräuchte, was zumindest unter Linux nicht gegeben ist.
Für benutzerspezifische Dateien bietet sich das Heimatverzeichnis an. Dazu nimmt man am besten die Rückgabe von "os.path.expanduser('~')". Dort erstellt man unter Linux ein verstecktes Verzeichnis ('~/.anwendungsname'), unter Windows sollte man den Punkt weglassen. Dort liegen dann die Konfigurationsdateien, in welche eine Anwendung auch schreiben kann.