Python Script ausführen. Ganz ohne Aufruf des Interpreters. Einfach nur das Script aufrufen.
Du hast Dein erstes Python Script geschrieben und fragst Dich nun, ob Du es nicht einfach direkt aufrufen kannst, ohne es via Parameter an den Python Interpreter zu übergeben. Also statt python my_amazing_program.py
einfach my_amazing_program.py
im Terminal aufrufen.
Klar geht das. Und zwar in drei Schritten. Im ersten Schritt musst Du Dein Python Script ausführbar machen. Das ist unter Linux und MacOS ganz einfach. Du öffnest das Terminal. Unter MacOS findest Du das unter /Applications/utilities/, deutsch /Anwendungen/Werkzeuge/. Im Terminal wechselst Du in das Verzeichnis, in dem Dein Script liegt. Liegt es beispielsweise in Deinem Home-Verzeichnis in einem Ordner “python”, würdest Du so dahin gelangen:
cd ~/python
Mit dem Aufruf chmod 755 my_amazing_program.py
machst Du Dein Script ausführbar. Der erste Schritt ist getan. Im zweiten Schritt musst Du Deinem Terminal bzw. Deiner Shell mitteilen, wie es Dein Programm ausführen kann. Du schreibst also in Dein Python Script den Python Interpreter hinein. Und zwar den Pfad zum Interpreter. Öffne also Dein Script und füge ganz am Anfang folgende Zeile hinzu:
#!/Library/Frameworks/Python.framework/Versions/3.9/bin/python3
Natürlich musst Du den Pfad mit dem Pfad zu Deinem Python Interpreter ersetzen. Wie Du den herausfindest? Da gibt es wieder mehrere Wege. Der wohl einfachste Weg ist es, im Terminal which python3
einzugeben. Der Aufruf liefert Dir den gesamten Pfad, den Du einfach oben ersetzt. Alternativ kannst Du den Pfad über ein selbst geschriebenes Script herausfinden.
import sys
print(sys.executable)
Oder Du nutzt den Aufruf type python3
. Last but not least, kannst Du auch einfach in Deine .bash_profile hineinschauen. Die Wahrscheinlichkeit ist hoch, dass bei der Installation der Pfad in Deiner bash_profile gesetzt wurde. Auf diese Datei kommen wir auch gleich wieder zurück.
Nach der Änderung speicherst Du Dein Python Script. Trotzdem wirst Du es noch nicht ohne weiteres ausführen können. Für einen Aufruf müsstest Du Deinem Terminal noch mitteilen, dass es im aktuellen Verzeichnis nach ausführbaren Dateien Ausschau halten soll. Tust Du das nicht, musst Du das beim Aufruf machen. Der würde dann folgend aussehen:
./my_amazing_program.py
Du möchtest aber einfach das Programm aufrufen. Im besten Fall so:
my_amazing_program.py
Dazu bedarf es eines letzten Schrittes. In Deinem Home-Verzeichnis liegt eine versteckte Konfigurationsdatei. Die .bash_profile. Existiert sie nicht, dann legst Du sie einfach an. Ein Aufruf mit dem Editor vim würde folgend aussehen:
vim ~/.bash_profile
Nun, der Editor vim ist nicht der angenehmste, wenn man als Neuling auf ihn stösst. Du kannst beispielsweise nicht einfach loslegen und schreiben. Zuerst musst Du vom ESC-Mode zum Insert-Mode wechseln. Das ist allerdings nicht wirklich schwierig. Taste “i” drücken und Du befindest Dich im Insert-Mode. Jetzt erweitern wir den Pfad in der .bash_profile.
export PATH=.:$PATH
Mit dieser Zeile teilst Du Deinem Terminal mit, dass es im aktuellen Verzeichnis, in dem Du gerade bist, nach ausführbaren Dateien suchen soll. So, das speicherst Du jetzt. Mit vim drückst Du die ESC-Taste und danach :wq
Mit ESC kommst Du in den ESC-Mode. :wq speichert die Datei und schliesst den Editor.
Noch mit dem Aufruf source ausführen:
source ~/.bash_profile
Jetzt kannst Du in das Verzeichnis Deines Python Scriptes wechseln und es direkt aufrufen:
my_amazin_program.py
Bei verschiedenen Linux-Distributionen werden Deine Einträge beim nächsten Systemstart nicht geladen. Sprich die .bash_profile wird nicht ausgeführt. Das liegt daran, dass .Bash_profile nur in einer Login-Shell geladen wird, nicht wenn Du sie in X startest. In diesem Fall schreibst Du den Pfad und das Alias in Deine .bashrc.
Meist ist es in dem Fall so, dass die .bash_profile die bashrc lädt, jedoch nicht vice versa.
Für zukünftige Scripte kannst Du Dir die letzten Schritte sparen. Sie brauchst Du dann nur noch ausführbar zu machen und den Interpreter in der ersten Zeile des Scriptes bekanntgeben. So wie in den ersten Schritten beschrieben.
Rainer Diehl meint
Vielen Dank für diesen Beitrag! Ich mache gerade die ersten Gehversuche mit Python und bin auch kein Linux-Freak. Ich hatte die Herausforderung, mein Script nicht aus Thonny, sondern aus einer Terminalsesiion zu starten, damit es auf eine Environmentvariable zugreifen kann, die für das Login beim Mailserver benötigt wird. Mit den Tipps, die ich hier gefunden habe, klappt das jetzt endlich – wunderbar!