Запуск сценарію python з терміналу без розширення .py


14

Я хочу викликати скрипт python script.py з терміналу, просто ввівши скрипт . Чи можливо це? Якщо так, то як?

Я знаю, що я можу уникати введення python script.py , додавши python #! / Usr / bin / env у верхню частину сценарію, але я все одно повинен додати суфікс .py для запуску сценарію.

Відповіді:


21

Файлові системи Unix / Linux не покладаються на розширення, як це робить Windows. Вам не знадобиться .pyкінець файлу для його запуску.

Ви можете запустити файл, зателефонувавши до інтерпретатора:

python ScriptFile

Або позначивши його виконуваним і визначивши перекладача в першому рядку (наприклад #!/usr/bin/python).

Якщо ви не можете виконати файл за допомогою:

/Path/to/ScriptFile

перевірити дозволи

ls -l ScriptFile

Вам може знадобитися додати виконуваний прапор, і chmodвін буде виконуватися для вас.

Якщо ви користуєтеся спеціальними сценаріями регулярно, можливо, ви хочете, щоб каталог, який ви зберігаєте, доданий до PATHзмінної середовища.


1
Файл знаходиться у ~ / робочому просторі / python. Я додав ~ / робочу область / python до свого шляху, я запустив sudo chmod a + x script.py ", і я додав рядок shebang (#! / Usr / bin / env python) у верхню частину сценарію Я можу запустити скрипт, набравши * script.py , але просто набрати скрипт не працює
jmau5

2
У unix / linux все є файлом і відповідає його імені файлу. Ви не можете назвати Script.py як сценарій. Спробуйте перейменувати файл із script.py на скрипт, і це повинно вирішити вашу проблему.
Патрік

Вибачте, я неправильно зрозумів! Все вирішено, дякую!
jmau5

5

.pyРозширення є необхідним для запуску сценарію. Вам потрібно лише зробити сценарій виконуваним (наприклад, запуском chmod a+x script) і додати рядок shebang ( #!/usr/bin/env python).


Дивіться мій коментар до відповіді Патріка.
jmau5

4

Як варіант, ви можете створити обгортку для свого сценарію ( .pyфайлу):

Наприклад, у вас є сценарій, runme.pyщоб ви могли створити новий файл runmeдля завершення сценарію:

#!/usr/bin/env python
import runme

а потім зателефонуйте до runme.pyфункціональності лише за допомогою виклику runmeв оболонці.

Це корисно для мультиплатформних сценаріїв, тому що на платформі Windows ви можете призначати .pyфайли, що викликаються просто по імені без розширення та шебанг у заголовку, але на платформі Linux ви не можете, і таким чином виходить обгортка.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.