Seite 1 von 1

Philosophie - Interpreter und Quelldatei oder .exe Datei?

Verfasst: Samstag 29. März 2008, 22:18
von ne0h
Hallo Python Gemeinde,

ich komm mal wieder mit einer eher philosophischen Frage, da ich mich in den letzten Tagen mit einigen Anwendern (Menschen, die wirklich keinen Schimmer von Programmierung haben) unterhalten sowie mit 2 Bekannten, die selbst programmieren.

Kern der Sache ist:

Ich habe mir überlegt, wie genau ich nun einem "reinen" Anwender ein fertiges Pythonprogramm ausliefern würde. Natürlich beschränke ich mich hier erstmal nur auf eben jene Anwender, die quasi auf dem niedrigsten Level der Nutzung sind und nicht viel mehr kennen als "Doppelklick -> läuft".

Nun, ich habe ja zwei Möglichkeiten, einem Anwender ein solches Programm zukommen zu lassen.

1. Ich liefere nur die reine Quelltext-Datei aus und muss dem Anwender mitteilen, dass dieser sich auch Python selbst mit seinem Interpreter installieren muss.

Dann, je nach Lage, muss der Anwender das Programm entweder über Kommandozeile starten ("Kommandozeile", alleine das Wort schreckt schon viele Anwender ab...) oder die Quelldatei eben per Doppelklick starten (dabei muss ja die Quelldatei mit dem Pythoninterpreter als "Standard" verknüpft sein).


2. Ich nutze beispielsweise "PyInstaller" und erstelle mir eine fertige .exe Datei (wahlweise auch eine fertige .app Datei für Mac OS X - das Betriebssystem ist jetzt aber erstmal egal). Der Anwender hat damit natürlich keine grossen Probleme, muss nur noch nen Doppelklick drauf machen und das Programm läuft einfach (dass in der .exe auch der Interpreter steckt, weiss dann sowieso wohl kaum Jemand).


Was mich nun stört ist die Tatsache, dass mir Methode Nr.2 nicht wirklich ... nun ja, "sauber" vorkommt.

Ich habe das Gefühl, dass dieses "Umarbeiten" der Quelldatei in eine fertige .exe Datei nicht dem Prinzip entspricht, oder besser gesagt, nicht dem wirklichen Grundsatz, der Philosophie, entspricht, die Python eigentlich vertritt.

Wie ich schonmal irgendwo hier lesen konnte, gibt es Jene, die den Standpunkt vertreten, dass ein Pythonprogramm als reine Quelldatei ausgeliefert wird, da es eben der Grundsatz der Sprache ist: Quelldatei wird geschrieben und dann dem Interpreter zum fressen gegeben.

Neige ich mich nun also eher in die Richtung, dem unbeholfenen Anwender entgegen zu kommen indem ich mein Programm über solche Umwege zur .exe verpacke oder hat dieser sich ein wenig anzustrengen, um dem Entwickler entgegen zu kommen?


Ich hoffe, man versteht meinen leichten Sarkasmus. :lol:

Was mir noch einfällt:
Gibt es irgendeine bekannte Möglichkeit, eine solche Methode wie den PyInstaller in einen Editor oder eine IDE (wie z.B. "Eric") einzubinden, sprich: Den ganzen Vorgang ein wenig zu vereinfachen und etwas zu "automatisieren" ??

Irgendwelche Plugins die sowas bewerkstelligen?


ne0h

Verfasst: Samstag 29. März 2008, 22:51
von jens
Na, also das spielt IMHO die Philosophie von Python keine Rolle. Es kommt einfach darauf an, welche Zielgruppe du hast und vor allem wieviel man denen zumuten mag.

Leicht raus bist du, wenn dein Zielgruppe Linux User sind. Da ist i.d.R. immer Python installiert und somit reicht es die Quellentexte rum zu reichen.

Wenn die Zielgruppe ehr normale Windows User sind, dann kommt es halt darauf an, ob die halt nur von der Sorte Klick-Bunti sind. Da muß es einfach eine EXE bzw. ein Installer sein, der alles macht und danach kann er das Programm starten...

Verfasst: Sonntag 30. März 2008, 09:08
von numerix
Vielleicht könnte es in den von dir genannen Fällen - Anwender kennt nur "Doppelklick -> läuft" - ein Kompromiss sein, die exe-Datei auszuliefern (für den Anwender) und den Quelltext beizugeben (fürs Gewissen oder die Philosophie oder was auch immer).

Verfasst: Sonntag 30. März 2008, 09:11
von jens
Man könnte es auch so drehen, das die Quellentexte nicht blos beigaben sind, sondern wirklich zur Ausführung herangezogen werden, der Anwender aber dennoch eine EXE Datei zum klicken bekommt ;) Einfacher ist es keine EXE sondern einfach nur eine CMD Batchdatei beizupacken. Also quasi: Python Interpreter + Quellentexte + CMD und fertig...
Hätte den Vorteil, das man bei einem Update teilweise nur die .py Dateien aktualisieren muß.

Siehe auch [wiki]FAQ#IchMchteMeinScriptInEineAusfhrbareDateiPackenUmEsEinfacherVerteilenZuKnnen[/wiki]

Verfasst: Sonntag 30. März 2008, 12:35
von Flano
Hallo ne0h,

wenn du Anwender auf niedrigsten Level als Ausgangspunkt nimmst, wird es wahrscheinlich am besten sein, wenn du dein Programm als „.exe“ weiter gibst. Selbst User die mehr Erfahrung haben, installieren ungern Python und dann vielleicht noch WX, um ein Programm laufen lassen zu können. (Windows User only!)

Ich gebe immer eine „Lies mich“ Datei dazu. Dort findet man Informationen wie: Open Source, in Python geschrieben, Plattform unabhängig, spezielle .exe für Windows, Email usw. Selbst wenn sich das Programm von alleine verbreitet gibt es für den interessierten User genügend Informationen. Über die Email Adresse kann gerne Kontakt aufgenommen werden zwecks Quellcode.

Verfasst: Sonntag 30. März 2008, 12:55
von veers
Für Windows User sollte es einen installer geben der am besten gleich alles beinhaltet. Redundanzen sind sie die ja gewohnt. Auf freien Systemen hat man ja fast immer einen Packetmanager. Da ist ein Paket natürlich das ideale. ;)

Verfasst: Sonntag 30. März 2008, 19:40
von ne0h
Na, also das spielt IMHO die Philosophie von Python keine Rolle
Gut, ist wohl eher "meine" Philosophie. :wink:

Man könnte es auch so drehen, das die Quellentexte nicht blos beigaben sind, sondern wirklich zur Ausführung herangezogen werden, der Anwender aber dennoch eine EXE Datei zum klicken bekommt Wink Einfacher ist es keine EXE sondern einfach nur eine CMD Batchdatei beizupacken. Also quasi: Python Interpreter + Quellentexte + CMD und fertig...
Inwiefern eine CMD Batch? Oder besser gesagt: Wozu genau?

Ich gebe immer eine „Lies mich“ Datei dazu. Dort findet man Informationen wie: Open Source, in Python geschrieben, Plattform unabhängig, spezielle .exe für Windows, Email usw. Selbst wenn sich das Programm von alleine verbreitet gibt es für den interessierten User genügend Informationen. Über die Email Adresse kann gerne Kontakt aufgenommen werden zwecks Quellcode.
Das klingt eigentlich sehr gut, da es ziemlich Anwenderfreundlich wirkt und man dazu einiges an Infos packen kann. Ich denke, dass auch eine Multilösung, wie sie z.B. von "pütone" angesprochen wurde, ziemlich vernünftig erscheint.

Schliesslich werden einige Programme auch direkt für diverse Plattformen angeboten und dazu meistens auch noch der Quellcode, der hier in Sachen Python ja schon das Programm selbst ausmacht.

Für Windows User sollte es einen installer geben der am besten gleich alles beinhaltet. Redundanzen sind sie die ja gewohnt. Auf freien Systemen hat man ja fast immer einen Packetmanager. Da ist ein Paket natürlich das ideale.
Zum Verständnis: Wie genau sollte so ein Paket denn aussehen bzw. wie sollte es erstellt werden?


ne0h

Verfasst: Sonntag 30. März 2008, 20:07
von Shizzo
ne0h hat geschrieben:
Man könnte es auch so drehen, das die Quellentexte nicht blos beigaben sind, sondern wirklich zur Ausführung herangezogen werden, der Anwender aber dennoch eine EXE Datei zum klicken bekommt Wink Einfacher ist es keine EXE sondern einfach nur eine CMD Batchdatei beizupacken. Also quasi: Python Interpreter + Quellentexte + CMD und fertig...
Inwiefern eine CMD Batch? Oder besser gesagt: Wozu genau?
Ein simples .bat script, im einfachsten Fall:

beispiel.bat

Code: Alles auswählen

 python beispiel.pyw 
Dabei ist zu beachten, dass das .bat script im gleichen Verzeichnis liegen muss, wie das .pyw script. Andernfalls, musst du entweder die Umgebugsvariable "PATH" abändern, oder das absolute Verzeichnis im .bat script selber angeben.

shizzo

Verfasst: Sonntag 30. März 2008, 22:02
von Leonidas
ne0h hat geschrieben:
Für Windows User sollte es einen installer geben der am besten gleich alles beinhaltet. Redundanzen sind sie die ja gewohnt. Auf freien Systemen hat man ja fast immer einen Packetmanager. Da ist ein Paket natürlich das ideale.
Zum Verständnis: Wie genau sollte so ein Paket denn aussehen bzw. wie sollte es erstellt werden?
In der Regel mit einem Texteditor. Du erstellst die nötigen Metadaten wie das ``debian/``-Verzeichnis für Debian und Ubuntu (dann mit dpkg-buildpackage für jede Version einzeln bauen), die RPM-Spec für Fedora, Mandriva und OpenSUSE (auch hier dann die RPMs aus den Quellen bauen), das Ebuild für Gentoo, das PKGBUILD für Arch-Linux, die entsprechenden Ports für die BSDs und schon sind die meisten glücklich.