Python: Plattformunabhaengiges Skript
-
Abend,
in meinen Python Scripts schreibe ich ganz am Anfang immer:
#!/usr/bin/python
# -- coding: utf-8 --damit ich die Scripts auf einer Linux Shell sofort mit ./myScript.py starten lassen kann.
Nun will ich das selbe Skript auch auf Linux laufen lassen, aber da stimmt natuerlich der Unix Pfad /usr... nicht.Wie schreibe ich am besten ein Skript, das auf Linux und Windows laufen soll? Oder kann ich die ersten 2 Zeilen einfach lassen (werden die auf Windows ignoriert?)
-
wie wärs wenn du es manuell startest:
python <DeinPythonScript>
-
idR macht man für sowas Start-Scripte oder meinetwege "Loader".
Du willst oft eh einen "bin" Ordner haben wo die Startdateien liegen (damit du diese zB zum Path hinzufügen kannst). Da bietet es sich an für unterschiedliche Plattformen unterschiedliche Startscripte zu verwenden.
Für Windows brauchst du zB eine .bat Datei, für Unix Systeme ein Shell Script, etc...
-
@Shade: Wozu sollte ich solche Startskripte brauchen? In die Path Variable muss doch nur der Python Interpreter und nicht die Skripte.
Wird ein Kommentar wie #!/usr/bin/python
# -- coding: utf-8 -- unter Windows eigentlich einfach ignoriert? Dann koennte ich ihn ja einfach in den Scripts lassen.
-
Pyth0r2 schrieb:
@Shade: Wozu sollte ich solche Startskripte brauchen?
Um plattformabhängige Dinge wie das shebang (und den python-Pfad) aus den eigentlichen Scripten raushalten zu können, also um dein Script auf mehreren Plattformen ausführen zu können.
-
Pyth0r2 schrieb:
@Shade: Wozu sollte ich solche Startskripte brauchen? In die Path Variable muss doch nur der Python Interpreter und nicht die Skripte.
Nein, ich meinte mit Path dein Script. Sagen wir du hast "cat" nachgebaut.
Dann willst du ja vielleicht wenn du in einem directory bist, direkt
"mycat foo.txt"
aufrufen können.Dazu hast du in deinem Applikationsordner einen Unterordner bin/ wo dein Start-Shellscript drinnen liegt. Dieses Script macht dann nichts anderes als python mit deinem Script aufzurufen und alle Parameter weiterzuleiten.
Dadurch ist es eben zB möglich "mycat foo.txt" aufrufen zu können.
Wird ein Kommentar wie #!/usr/bin/python
# -- coding: utf-8 -- unter Windows eigentlich einfach ignoriert? Dann koennte ich ihn ja einfach in den Scripts lassen.Klar, weil # ja ein Kommentar in Python einleitet.
Aber unter Windows musst du das Python script ja auch irgendwie starten können... Da bietet sich eben eine .bat Datei an...
-
Shade Of Mine schrieb:
Pyth0r2 schrieb:
@Shade: Wozu sollte ich solche Startskripte brauchen? In die Path Variable muss doch nur der Python Interpreter und nicht die Skripte.
Nein, ich meinte mit Path dein Script. Sagen wir du hast "cat" nachgebaut.
Dann willst du ja vielleicht wenn du in einem directory bist, direkt
"mycat foo.txt"
aufrufen können.Dazu hast du in deinem Applikationsordner einen Unterordner bin/ wo dein Start-Shellscript drinnen liegt. Dieses Script macht dann nichts anderes als python mit deinem Script aufzurufen und alle Parameter weiterzuleiten.
Dadurch ist es eben zB möglich "mycat foo.txt" aufrufen zu können.
Wird ein Kommentar wie #!/usr/bin/python
# -- coding: utf-8 -- unter Windows eigentlich einfach ignoriert? Dann koennte ich ihn ja einfach in den Scripts lassen.Klar, weil # ja ein Kommentar in Python einleitet.
Aber unter Windows musst du das Python script ja auch irgendwie starten können... Da bietet sich eben eine .bat Datei an...Also meine Python Skripte sind nicht so allgemeine Funktionen wie "cat" oder "ls", sondern kleine Spezialprogramme. Ich wollte das so machen, dass der Benutzer einfach in den Ordner mit den Scripts geht und unter Linux einfach
./myScript.py eingibt und unter Windows einen Doppelklick auf myScript.py
-
Unter GNU/Linux wuerde ich eher
#!/usr/bin/env python
verwenden, das ist portabler. Und unter Windows wird der She-Bang wohl ignoriert, da muss dann einfach die Dateizuordnung fuer .py passen.
-
#!/usr/bin/env python und #!/usr/bin/env python
sind python kommentare der Python interpreter ignoriert sie
Windows ignoriert diese Zeile auch denn
unter Windows werden die Dateien an der .py Endung als Python-Skript erkannt(wenn Python installiert ist) und dann wird der Python interpreter mit dem Skript gestartet
-
Dieser Thread wurde von Moderator/in Marc++us aus dem Forum Rund um die Programmierung in das Forum Dynamische Programmiersprachen (Python, Ruby, Perl & Co) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.