Комментарий заголовка исходного кода Python - PullRequest
8 голосов
/ 02 апреля 2009

Что такое линия

#!/usr/bin/env python

в первой строке скрипта Python, используемого для?

Ответы [ 6 ]

24 голосов
/ 02 апреля 2009

В UNIX и Linux указывается, какой двоичный файл использовать в качестве интерпретатора (см. Также Wiki-страница ). Например, скрипт оболочки интерпретируется как /bin/sh.

#!/bin/sh

Теперь с python это немного сложно, потому что вы не можете предположить, где установлен бинарный файл или какой вы хотите использовать. Таким образом, /usr/bin/env трюк. Он используется в зависимости от того, какой двоичный файл Python первым в $PATH. Вы можете проверить, что выполняет which python

С помощью строки интерпретатора вы можете запустить скрипт, выполнив chmod для его запуска. И просто запустить его. Таким образом, со сценарием, начинающимся с

#!/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
14 голосов
/ 02 апреля 2009

Это называется шебанг строка:

В вычислениях, шебанг (также называемый хэшбэнг, хэшплинг или фунт бэнг) относится к символам "#!" когда они первые два символа в текстовом файле. Unix-подобные операционные системы принимают присутствие этих двух символов как указание на то, что файл является сценарием, и пытаются выполнить этот сценарий, используя интерпретатор, указанный в оставшейся части первой строки файла. Например, сценарии оболочки для оболочки Bourne начинаются с первой строки:

5 голосов
/ 02 апреля 2009

Как сказал Андри. В 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 интерпретатор оболочки делает вывод, открывая файл и проверяя, есть ли в нем команда с именем.

5 голосов
/ 02 апреля 2009

В UNIX и аналогичных операционных системах в этой строке указывается, какой интерпретатор следует использовать в случае выполнения файла.

3 голосов
/ 02 апреля 2009

'/ usr / bin / env python' ищет $ PATH для python и запускает его.

Обычно env используется для установки некоторых переменных среды для программы

Эта строка говорит вашему компьютеру, что делать с этим файлом, если вы просто попытаетесь запустить файл без указания интерпретатора .. подробнее

2 голосов
/ 02 апреля 2009

Просто примечание, эта строка - не более, чем комментарий к интерпретатору в Windows .

...