Я видел, что много раз эти строки используются #!/usr/bin/python
и #!/usr/bin/env python
в начале скриптов, и мне было интересно, есть ли разница, если есть, то какую из них больше рекомендуется использовать?
Я видел, что много раз эти строки используются #!/usr/bin/python
и #!/usr/bin/env python
в начале скриптов, и мне было интересно, есть ли разница, если есть, то какую из них больше рекомендуется использовать?
#!/usr/bin/env Python
Я бы сказал, что это наиболее рекомендуемый вариант, поскольку он использует среду для поиска первого вхождения исполняемого файла Python. Если вы прочитали документацию по команде
env
:Подразумевается, что вы выполняете команду в измененной среде. Посмотрим, что в нем
$PATH
:Затем при использовании он
#!/usr/bin/env python
будет искать исполняемый файл команды вpython
соответствии с путями, определенными в$PATH
вашей среде, это хорошо, поскольку возможно, что у вас установлено несколько версий Python (в Linux у вас обычно есть версии 2 и 3).Если мы попробуем это в терминале (результат может отличаться):
Для демонстрации работы
env
проведем несколько тестов. Мы создаем символическую ссылкуpython3
из/usr/local/bin
:Вы можете заметить выше, что в моем
$PATH
пути путь/usr/local/bin
находится перед путем/usr/bin
, поэтому, если я снова запущу:Теперь я получаю версию 3 Python. Посмотрите, что произойдет, если я изменю
$PATH
для целей тестирования:С
/usr/bin
первым маршрутом:С
/usr/local/bin
первым маршрутом:Я надеюсь, что это понятно, я думаю, что использование этого способа является преимуществом, но иногда он может работать не так, как ожидалось, если маршруты Python были изменены, хотя также возможно, что вы немного более конкретны и используете, например, один из это в вашем сценарии:
#!/usr/bin/env python2
#!/usr/bin/env python3
#!/usr/бин/питон
Это также верно, вы просто вызываете путь к исполняемому файлу Python:
У меня возникли некоторые проблемы с этим способом, я, кажется, помню, что в некоторых дистрибутивах Linux исполняемый файл Python не был найден в
/usr/bin/python
.заключительные заметки
#!