Комментарий к заголовку исходного кода Python
Вопрос
Что это за линия
#!/usr/bin/env python
в первой строке скрипта python, используемого для?
Решение
В UNIX и Linux это указывает, какой двоичный файл использовать в качестве интерпретатора (см. Также Вики - страница).Например, сценарий оболочки интерпретируется /bin/sh
.
#!/bin/sh
Теперь с python это немного сложнее, потому что вы не можете предположить, где установлен двоичный файл и который вы хотите использовать.Таким образом, /usr/bin/env
трюк.Он использует тот двоичный файл python, который является первым в $PATH
.Вы можете проверить, что выполнение which python
С помощью строки интерпретатора вы можете запустить скрипт, изменив его на исполняемый.И просто запускаю его.Таким образом, со сценарием, начинающимся с
#!/usr/bin/env python
эти два метода эквивалентны:
$ python script.py
и (предполагая, что ранее вы сделали chmod +x script.py
)
$ ./script.py
Это полезно для создания общесистемных сценариев.
cp yourCmd.py /usr/local/bin/yourCmd
chmod a+rx /usr/local/bin/yourCmd
И затем вы вызываете его из любого места просто с
yourCmd
Другие советы
Это называется дело линия:
В вычислительной технике shebang (также называемый hashbang, hashpling или pound bang) относится к символам "#!", когда они являются первыми двумя символами в текстовом файле.Unix-подобные операционные системы воспринимают наличие этих двух символов как указание на то, что файл является скриптом, и пытаются выполнить этот скрипт, используя интерпретатор, указанный в остальной части первой строки файла.Например, сценарии оболочки для оболочки Bourne начинаются с первой строки:
В UNIX и аналогичных операционных системах эта строка указывает, какой интерпретатор следует использовать, если файл выполняется.
Как сказал Андри.В Windows исполняемый файл для запуска файла при запуске из командной строки зависит от ассоциации:
16:12:40.68 C:\>assoc .py
.py=Python.File
16:13:53.45 C:\>assoc Python.File
Python.File=Python File
16:14:01.70 C:\>ftype Python.File
Python.File="C:\Python30\python.exe" "%1" %*
В Unix интерпретатор оболочки делает вывод, открывая файл и проверяя, есть ли в файле команда с именем.
'/usr/bin/env python' ищет python в $PATH и запускает его.
Обычно env используется для установки некоторых переменных среды для программы
Что делает эта строка, так это сообщает вашему компьютеру, что делать с этим файлом, если вы просто попытаетесь запустить файл без указания переводчика.. более подробно
Просто примечание, эта строка - не что иное, как комментарий к интерпретатору в Windows.