Der einfachste Weg um Pythonscripts zu starten?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
MilesTeg
User
Beiträge: 8
Registriert: Donnerstag 2. Februar 2006, 02:51

Donnerstag 19. Juli 2007, 18:39

Hallo

Ich bin gerade dran ein kleines Programm zu schreiben. Jetzt überlege ich wie ich das am besten "an den Mann/die Frau" bringe.

Am liebsten wäre es mir wenn man das Programm (zur Zeit nur ein Scriptfile) nach dem herunterladen einfach per doppelklick starten könnte.

Das Programm richtet sich vor allem an Einsteiger unter Linux (v.a. Ubuntu), aber sollte auch auf anderen Systemen einfach zu starten sein.

Bei google hab ich nix gefunden, da ich nicht ganz sicher bin wonach ich da suchen müßte

Gruß
MilesTeg
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Donnerstag 19. Juli 2007, 19:22

Code: Alles auswählen

#!/usr/bin/python
in die erste Zeile des Skriptes, das Skript als Ausführbar markieren (chmod +x Skriptname). Dann in ein tar packen und das Tar zum runterladen anbieten.

Das Getarre hat den Zweck, dass automatisch das Executable-Flag gesetzt wird und die Meisten DE wie Gnome und KDE bieten automatischen entpacken von tar an.
MilesTeg
User
Beiträge: 8
Registriert: Donnerstag 2. Februar 2006, 02:51

Donnerstag 19. Juli 2007, 19:30

danke, das hat mir schonmal weitergeholfen!

ich Linux-DAU :oops:
rafael
User
Beiträge: 189
Registriert: Mittwoch 26. Juli 2006, 16:13

Donnerstag 19. Juli 2007, 19:30

Oder wenn in deinem Skript eine bestimmte Funktion beim Aufruf ausgeführt werden soll, kannst du es so lösen:

Code: Alles auswählen

def main():
    # hier deine Funktion
    pass

if __name__ == '__main__':
    main()
Das testet, ob das Skript importiert wird oder so aufgerufen wird. Bringt also den Vorteil mit, modularer zu sein.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 19. Juli 2007, 20:11

Joghurt hat geschrieben:

Code: Alles auswählen

#!/usr/bin/python
in die erste Zeile des Skriptes, das Skript als Ausführbar markieren (chmod +x Skriptname). Dann in ein tar packen und das Tar zum runterladen anbieten.
Ich würde eher

Code: Alles auswählen

#!/usr/bin/env python

machen, das hat den Vorteil auch dann zu funktionieren wenn ``python`` wo anders als in ``/usr/bin/`` liegt.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Donnerstag 19. Juli 2007, 20:35

Leonidas hat geschrieben:das hat den Vorteil auch dann zu funktionieren wenn ``python`` wo anders als in ``/usr/bin/`` liegt.
Und den Nachteil, nicht zu funktionieren, wenn env in /bin statt /usr/bin liegt. Ist mir schonmal passiert.

Außerdem kannst du dann nicht mehr Optionen an Python übergeben, da nur die ersten beiden "Wörter" ausgewertet werden, zumindest unter einigen Unices.

Ist denke ich Geschmackssache
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 19. Juli 2007, 20:53

Joghurt hat geschrieben:
Leonidas hat geschrieben:das hat den Vorteil auch dann zu funktionieren wenn ``python`` wo anders als in ``/usr/bin/`` liegt.
Und den Nachteil, nicht zu funktionieren, wenn env in /bin statt /usr/bin liegt. Ist mir schonmal passiert.
Ja, das stimmt. Ich denke aber es ist warscheinlicher, dass ``env`` in ``/usr/bin/`` liegt, als dass ``python`` es tut. Es gibt ja doch mehr Leute die sich ``python`` nach ``/usr/local/bin/`` installieren, damit sie eine aktuelle Python-Version haben. Aber ich gebe zu, sehr viel Unterschied besteht da wirklich nicht.
Joghurt hat geschrieben:Außerdem kannst du dann nicht mehr Optionen an Python übergeben, da nur die ersten beiden "Wörter" ausgewertet werden, zumindest unter einigen Unices.
Ja, das ist ein ärgerlicher Bug, das stimmt.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Donnerstag 19. Juli 2007, 21:40

Leonidas hat geschrieben:
Joghurt hat geschrieben:Außerdem kannst du dann nicht mehr Optionen an Python übergeben, da nur die ersten beiden "Wörter" ausgewertet werden, zumindest unter einigen Unices.
Ja, das ist ein ärgerlicher Bug, das stimmt.
Weniger ein Bug als eine Beschränkung. Als nächstes kommt jemand und sagt, er will Quotes im Shebang interpretiert haben. Etc., und am Schluss muss der Kernel sämtliche Shell-Wordsplitting-Regeln implementieren.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
lunar

Freitag 20. Juli 2007, 10:59

birkenfeld hat geschrieben:
Leonidas hat geschrieben:
Joghurt hat geschrieben:Außerdem kannst du dann nicht mehr Optionen an Python übergeben, da nur die ersten beiden "Wörter" ausgewertet werden, zumindest unter einigen Unices.
Ja, das ist ein ärgerlicher Bug, das stimmt.
Weniger ein Bug als eine Beschränkung. Als nächstes kommt jemand und sagt, er will Quotes im Shebang interpretiert haben. Etc., und am Schluss muss der Kernel sämtliche Shell-Wordsplitting-Regeln implementieren.
Dann sind wir bei einem Shebang mit Scripting-Unterstützung und Umgebungsvariablen...

... und dann kommt jemand und will Python-Code im Sheband ausführen...
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 20. Juli 2007, 12:40

birkenfeld hat geschrieben:Weniger ein Bug als eine Beschränkung. Als nächstes kommt jemand und sagt, er will Quotes im Shebang interpretiert haben. Etc., und am Schluss muss der Kernel sämtliche Shell-Wordsplitting-Regeln implementieren.
Naja, das ist vielleicht schon übertrieben, obwohl es sicher auch dafür sinnvolle Anwendungsfälle gäbe, aber so ganz normale Parameter finde ich sind ziemlich grundlegende Funktionalität.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Freitag 20. Juli 2007, 14:26

Wenn man entsprechende Rechte auf dem ungewöhnlichen Zielsystem hat, könnte man - auch im Hinblick auf andere Scripts - Symlinks nutzen, um z.B. /usr/bin/env bereitzuhalten.

Andererseits kann man auch einfach die Shebang-Line anpassen :) Eine Lösung, die überall funktioniert, gibt es wohl ohnehin nicht. Da ist es doch gut, dass man es leicht den Anforderungen angleichen kann.
lunar

Freitag 20. Juli 2007, 14:37

Y0Gi hat geschrieben:Andererseits kann man auch einfach die Shebang-Line anpassen :)
Das wird ja auch von den distutils so gehandhabt für alles, was über scripts installiert wird.
Antworten