Ich habe versucht, die Antwort zu googeln, aber ohne Glück.
Ich muss meinen Works-Supercomputer-Server verwenden, aber um mein Python-Skript auszuführen, muss es über ein Shell-Skript ausgeführt werden.
Zum Beispiel möchte ich, dass job.sh
python_script.py
ausführt.
Wie kann das erreicht werden?
Stellen Sie nur sicher, dass sich die ausführbare Python-Datei in Ihrer Umgebungsvariablen PATH befindet, und fügen Sie sie in Ihr Skript ein
python path/to/the/python_script.py
Einzelheiten:
#!/bin/sh python python_script.py
chmod u+x job.sh
./job.sh
Angenommen, Sie haben eine Python-Datei hello.py
Erstellen Sie eine Datei namens job.sh
, die enthält
#!/bin/bash
python hello.py
kennzeichnen Sie es mit
$ chmod +x job.sh
dann führe es aus
$ ./job.sh
Ändern Sie Ihr Skript hello.py
und fügen Sie dies als erste Zeile hinzu
#!/usr/bin/env python
kennzeichnen Sie es mit
$ chmod +x hello.py
dann führe es aus
$ ./hello.py
Ich schreibe
python /path/to/script.py
Ist ganz falsch, besonders in diesen Tagen. Welcher Python? Python2.6? 2,7? 3,0? 3,1? In den meisten Fällen müssen Sie die Python-Version im Shebang-Tag der Python-Datei angeben. Ich ermutige zu verwenden
#!/usr/bin/env python2 #oder python2.6 oder python3 oder sogar python3.1für die Kompatibilität.
In einem solchen Fall ist es viel besser, das Skript ausführbar zu machen und es direkt aufzurufen:
#!/bin/bash /Pfad/zu/script.py
Auf diese Weise wird die benötigte Version von Python nur in einer Datei geschrieben. Die meisten Systeme haben heutzutage in der Zwischenzeit Python2 und Python3, und es kommt vor, dass der Symlink Python auf Python3 verweist, während die meisten Leute davon ausgehen, dass er auf Python2 zeigt.
Dies funktioniert am besten für mich: Fügen Sie dies oben im Skript hinzu:
#!c:/Python27/python.exe
(C:\Python27\python.exe ist der Pfad zur Datei python.exe auf meinem Computer.).
chmod +x script-name.py && script-name.py
sie sollten es als Python scriptname.py aufrufen können
z.B
# !/bin/bash
python /home/user/scriptname.py
stellen Sie außerdem sicher, dass das Skript über Berechtigungen zum Ausführen verfügt
sie können es mit chmod u + x scriptname.py ausführbar machen
EDIT: dazu geschlagen :-p
Speichern Sie das folgende Programm als print.py
:
#!/usr/bin/python3
print('Hello World')
Dann im Terminaltyp:
chmod +x print.py
./print.py
Das funktioniert für mich:
Erstellen Sie einen neuen Shell-Dateijob. Sagen wir also: touch job.sh
und fügen Sie den Befehl zum Ausführen des Python-Skripts hinzu (Sie können diesem Python sogar Befehlszeilenargumente hinzufügen, ich definiere normalerweise meine Befehlszeilenargumente vor).
chmod +x job.sh
Fügen Sie in job.sh
die folgenden py-Dateien hinzu, sagen wir:
python_file.py argument1 argument2 argument3 >> testpy-output.txt && echo "Done with python_file.py"
python_file1.py argument1 argument2 argument3 >> testpy-output.txt && echo "Done with python_file1.py"
Done with python_file.py
Done with python_file1.py
Ich verwende dies normalerweise, wenn ich mehrere Python-Dateien mit unterschiedlichen, vordefinierten Argumenten ausführen muss.
Hinweis: Nur ein kurzer Blick auf das, was hier los ist:
python_file.py argument1 argument2 argument3 >> testpy-output.txt && echo "completed with python_file.py" .
python python_file.py
, schlicht und einfach. Als Nächstes druckt der >> die Ausgabe dieser .py-Datei in der Datei testpy-output.txt und speichert sie. Ich benutze das und es funktioniert gut
#/bin/bash
/usr/bin/python python python_script.py
Da die anderen Beiträge alles sagen (und ich bin über diesen Beitrag gestolpert, während ich nach dem Folgenden suche).
So können Sie ein Python-Skript aus einem anderen Python-Skript ausführen:
Python 2:
execfile("somefile.py", global_vars, local_vars)
Python 3:
with open("somefile.py") as f:
code = compile(f.read(), "somefile.py", 'exec')
exec(code, global_vars, local_vars)
und Sie können Argumente liefern, indem Sie einen anderen sys.argv
angeben.