Próbowałem znaleźć odpowiedź w Google, ale bez powodzenia.
Muszę użyć mojego serwera superkomputera, ale aby mój skrypt w Pythonie działał, musi być wykonywany za pośrednictwem skryptu powłoki.
Na przykład chcę job.sh
wykonaćpython_script.py
Jak można to osiągnąć?
python python_script.py
swój skrypt powłoki?python python_script.py
. Albo po prostu,./python_script.py
jeśli scenariusz dostanie shebang.Odpowiedzi:
Po prostu upewnij się, że plik wykonywalny Pythona znajduje się w zmiennej środowiskowej PATH, a następnie dodaj swój skrypt
Detale:
chmod u+x job.sh
./job.sh
źródło
python --version
, i możesz wymusić wersję za pomocąpython3 hello.py
.source PATH/TO/VENV/bin/activate
i zadzwonićpython python_script.py
/path/to/Python: can't open file '/path/to/script': [Errno 1] Operation not permitted
czy istnieje sposób na zawarcie mojego kodu w języku Python w skrypcie bash?Metoda 1 - Utwórz skrypt powłoki:
Załóżmy, że masz plik Pythona
hello.py
Utwórz plik o nazwie,job.sh
który zawieraoznacz to jako wykonywalne za pomocą
następnie uruchom go
Metoda 2 (LEPSZA) - Spraw, aby sam Python był uruchamiany z powłoki:
Zmodyfikuj skrypt
hello.py
i dodaj go jako pierwszą linięoznacz to jako wykonywalne za pomocą
następnie uruchom go
źródło
#!/usr/bin/env python
. Pamiętaj, aby upewnić się, że odwołujesz się do właściwej wersji Pythona + ścieżki dla swojego systemu!Imho, piszę
Jest całkiem źle, szczególnie w dzisiejszych czasach. Który Python? python2.6? 2,7? 3.0? 3.1? W większości przypadków musisz określić wersję pythona w tagu shebang pliku python. Zachęcam do korzystania
dla kompatybilności.W takim przypadku znacznie lepiej jest mieć skrypt wykonywalny i wywołać go bezpośrednio:
W ten sposób potrzebna wersja Pythona jest zapisywana tylko w jednym pliku. Obecnie większość systemów ma python2 i python3 i zdarza się, że python dowiązania symbolicznego wskazuje na python3 , podczas gdy większość ludzi spodziewa się, że wskazuje na python2 .
źródło
python script.py param
?./abc.py -h
Zapisz następujący program jako
print.py
:Następnie w typie terminala:
źródło
To działa najlepiej dla mnie: dodaj to na początku skryptu:
(C: \ Python27 \ python.exe to ścieżka do python.exe na moim komputerze) Następnie uruchom skrypt za pomocą:
źródło
To działa dla mnie:
Utwórz nowe zadanie pliku powłoki. Powiedzmy więc:
touch job.sh
i dodaj polecenie, aby uruchomić skrypt Pythona (możesz nawet dodać argumenty wiersza poleceń do tego Pythona, zwykle wstępnie definiuję argumenty wiersza poleceń).chmod +x job.sh
Wewnątrz
job.sh
dodaj następujące pliki py, powiedzmy: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
Zwykle używam tego, gdy muszę uruchomić wiele plików Pythona z różnymi, wstępnie zdefiniowanymi argumentami.
Uwaga: tylko krótkie ostrzeżenie o tym, co się tutaj dzieje:
python python_file.py
:, prosty i prosty. Następnie >> wydrukuje i zapisze wynik tego pliku .py w pliku testpy-output.txt.źródło
Powinieneś móc go wywołać jako
python scriptname.py
npUpewnij się również, że skrypt ma uprawnienia do uruchamiania.
Możesz uczynić go wykonywalnym za pomocą
chmod u+x scriptname.py
.źródło
Używam tego i działa dobrze
źródło
Ponieważ inne posty mówią wszystko (i natknąłem się na ten post, szukając następującego).
Oto sposób wykonania skryptu w języku Python z innego skryptu w języku Python:
Python 2:
Python 3:
i możesz podać argumenty, podając inne
sys.argv
źródło