Перейти к содержимому

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

31

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

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

77 702 просмотра
user2018084 спросил 11 лет назад
U 771

4 ответа

51
Принятый ответ

There are two things you need to do:

  • Make sure the file is executable: chmod +x script.py
  • Use a shebang to let the kernel know what interpreter to use. The top line of the script should read:

    #!/usr/bin/python 

    This assumes that your script will run with the default python. If you need a specific version, just specify in the shebang:

    #!/usr/bin/python2.7 

Now you can type:

 ./script.py 

if the script is in your current directory, or:

 script.py 

if the location of the script happens to be in your PATH, or:

 path/to/script.py 

otherwise.

Обычно лучше использовать #! / Usr / bin / env python, если у пользователя есть локальная сборка python (например, в / usr / local / bin), которую он предпочел бы запустить скрипт с.

sapi · 11 лет назад · 32

@sapi Не согласно Debian, по крайней мере, в их политике разработки. Если вы пишете свои собственные сценарии, вы можете, конечно, принять риск, просто лучше быть явным. Если вы хотите местный, выберите его в шебанге.

Paul · 11 лет назад · 3

Это не bash, который читает файл при выполнении ...

progo · 11 лет назад · 3

@progo Это правда - обратите внимание, что если вы видите ответ, который, по вашему мнению, выиграет от улучшения, продолжайте и редактируйте его, улучшения всегда приветствуются

Paul · 11 лет назад · 0

И вам придется делать . / Script.py, а не script.py

Paul Draper · 11 лет назад · 0

@PaulDraper Пожалуйста, смотрите предыдущий ответ. Если у вас есть предложенное улучшение ответа, продолжайте и отредактируйте ответ.

Paul · 11 лет назад · 0

@sapi: я согласен. Кроме того, если вы устанавливаете несколько питонов, вы обычно можете угадать: #! / Usr / bin / env python3 или #! / Usr / bin / env python2.7

David Frascone · 11 лет назад · 0

@PaulDraper Вопрос совершенно правильный. Вы должны использовать . / Только для выполнения, если скрипт не находится в вашем PATH. Если скрипт находится по другому пути или вы просто хотите использовать полный путь, вам не нужно . / '. Кроме того, можно избежать целого именования .py, это не обязательно.

erm3nda · 8 лет назад · 0
Paul ответил 11 лет назад
P 47 628
30

Under linux you can simply use the hashbang(aka shebang). Add the line

#!/usr/bin/python 

if you want to execute the default python interpreter.

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

to use some specific version, or

#!/usr/bin/env python 

If you want the environment to find python for you.

You will also be required to make the script executable

chmod +x script[.py] 
Gaurav Joseph ответил 11 лет назад
G 1 392
0

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

#!/usr/bin/env python 

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

Cory Klein ответил 8 лет назад
C 732
0

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

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

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

! /usr/bin/python3.6

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

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

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

Suraj Bora ответил 8 лет назад
S 1