Вопрос Запускать скрипты Python без явного вызова `python`


Я использую Debian Linux.

Мне было интересно, есть ли способ настроить запуск все Скрипты Python в терминале путем ввода script.py (вместо python script.py).


30
2017-10-19 23:38


происхождения




ответы:


Вам нужно сделать две вещи:

  • Убедитесь, что файл выполним: chmod +x script.py
  • Используйте shebang, чтобы ядро ​​могло знать, какой интерпретатор использовать. Верхняя строка сценария должна гласить:

    #!/usr/bin/python
    

    Это предполагает, что ваш скрипт будет работать с python по умолчанию. Если вам нужна конкретная версия, просто укажите в shebang:

    #!/usr/bin/python2.7
    

Теперь вы можете ввести:

    ./script.py

если скрипт находится в вашем текущем каталоге или:

    script.py

если местоположение сценария находится в вашей PATH или:

    path/to/script.py

в противном случае.


50
2017-10-19 23:47



Как правило, лучше использовать #!/usr/bin/env python, если пользователь имеет локальную сборку python (например, в /usr/local/bin), с которым они скорее всего будут запускать скрипт. - sapi
@sapi Не согласно Debian, это не так, по крайней мере, в их политике разработчиков. Если вы пишете свои собственные сценарии, вы можете принять риск, конечно, лучше быть явным. Если вы хотите локальный, выберите его в shebang. - Paul
Это не bash который читает файл при выполнении ... - progo
@progo Это правда - обратите внимание, что если вы увидите ответ, который, по вашему мнению, принесет пользу от улучшения, продолжите и отредактируйте его, улучшения всегда приветствуются - Paul
И вам придется делать ./script.py, а не script.py - Paul Draper


Под linux вы можете просто использовать hashbang (aka shebang). Добавить строку

#!/usr/bin/python

если вы хотите выполнить интерпретатор python по умолчанию.

#!/path/to/python[x.x]

для использования определенной версии или

#!/usr/bin/env python

Если вы хотите, чтобы среда находила python для вас.

Вам также потребуется сделать исполняемый файл сценария

chmod +x script[.py] 

30
2017-10-19 23:58



Я не думаю, что это действительно добавляет ничего к другому ответу. - David Z
@DavidZ, другие комментарии о env были добавлены намного позже, мой пост был первым. Кроме того, в вышеприведенном сообщении не упоминается, что python также может находиться в другом пути, чем /usr/bin/python, По крайней мере, посмотрите, прежде чем добавлять лишние комментарии. - Gaurav Joseph
О, подожди, я неправильно понял и подумал, что другой ответ включает в себя материал о env, Виноват. - David Z


Использование:

#!/usr/bin/env python

Это гарантирует, что питон, который пользователь ожидает использовать, будет тем, который запускает скрипт. Это особенно важно, если пользователь использует virtualenv для получения определенной версии python в заданной среде.


0
2017-10-31 18:09





Используйте строку shebang в верхней части вашего скрипта, как показано ниже:

! / USR / бен / питон

Обновите соответствующую версию python, на которой вы хотите выполнить скрипт. например Для python 3.6 его

! /usr/bin/python3.6

для интерпретатора по умолчанию

! / USR / бен / питон

Примечание. Убедитесь, что сценарий имеет разрешение на выполнение.


0
2018-04-08 19:22