Uruchamianie skryptu python z terminala bez rozszerzenia .py
14
Chcę wywołać skrypt python script.py z terminala, po prostu wpisując skrypt . czy to możliwe? Jeśli tak to jak?
Wiem, że mogę uniknąć pisania python script.py poprzez dodanie #! / Usr / bin / env python na górze skryptu, ale nadal muszę dodać sufiks .py , aby uruchomić skrypt.
Systemy plików Unix / Linux nie polegają na rozszerzeniach, tak jak Windows. Do .pyuruchomienia pliku nie trzeba go używać na końcu pliku.
Możesz uruchomić plik, wywołując go za pomocą interpretera:
python ScriptFile
Lub zaznaczając plik wykonywalny i definiując interpreter w pierwszym wierszu (np #!/usr/bin/python.).
Jeśli nie możesz wykonać pliku za pomocą:
/Path/to/ScriptFile
sprawdź uprawnienia za pomocą
ls -l ScriptFile
Być może trzeba dodać flagę wykonywalną chmod, aby została ona wykonana za Ciebie.
Jeśli regularnie używasz niestandardowych skryptów, możesz upewnić się, że katalog, w którym je przechowujesz, jest dodany do PATHzmiennej środowiskowej.
Plik znajduje się w ~ / workspace / python. Dodałem ~ / workspace / python do mojej ścieżki, uruchomiłem sudo chmod a + x script.py "i dodałem linię shebang (#! / Usr / bin / env python) na początku skryptu Mogę uruchomić skrypt, wpisując * script.py , ale sam skrypt nie działa
jmau5
2
W unix / linux wszystko jest plikiem i odpowiada na jego nazwę. Nie można wywoływać Script.py jako skryptu. Spróbuj zmienić nazwę pliku ze script.py na skrypt, a powinno to rozwiązać problem.
Patrick
Przepraszam, źle zrozumiałem! Wszystko rozwiązane, dzięki!
jmau5
5
.pyRozszerzenie jest konieczne dla wykonywania skryptu. Musisz tylko wykonać skrypt (np. Uruchamiając chmod a+x script) i dodać linię shebang ( #!/usr/bin/env python).
Opcjonalnie możesz utworzyć opakowanie dla skryptu ( .pypliku):
Na przykład masz skrypt, runme.pydzięki czemu możesz utworzyć nowy plik runmedo zawinięcia skryptu:
#!/usr/bin/env pythonimport runme
a następnie wywołać runme.pyfunkcjonalność, po prostu wywołując runmepowłokę.
Jest to przydatne w przypadku skryptów wieloplatformowych, ponieważ na platformie Windows można przypisać .pypliki, które mają być wywoływane tylko według nazwy bez rozszerzenia i shebang w nagłówku, ale na platformie Linux nie można tego zrobić, a zatem opakowanie jest wyświetlane.
.py
Rozszerzenie jest konieczne dla wykonywania skryptu. Musisz tylko wykonać skrypt (np. Uruchamiającchmod a+x script
) i dodać linię shebang (#!/usr/bin/env python
).źródło
Opcjonalnie możesz utworzyć opakowanie dla skryptu (
.py
pliku):Na przykład masz skrypt,
runme.py
dzięki czemu możesz utworzyć nowy plikrunme
do zawinięcia skryptu:a następnie wywołać
runme.py
funkcjonalność, po prostu wywołującrunme
powłokę.Jest to przydatne w przypadku skryptów wieloplatformowych, ponieważ na platformie Windows można przypisać
.py
pliki, które mają być wywoływane tylko według nazwy bez rozszerzenia i shebang w nagłówku, ale na platformie Linux nie można tego zrobić, a zatem opakowanie jest wyświetlane.źródło