Иногда, если ответ не очень ясен (я имею в виду, что вы не можете решить, да или нет), тогда он не имеет большого значения, и вы можете игнорировать проблему, пока ответ не станет ясным.
Единственная цель #!
- запуск скрипта.Django загружает источники самостоятельно и использует их.Никогда не нужно решать, какой переводчик следует использовать.Таким образом, #!
здесь на самом деле не имеет смысла.
Как правило, если это модуль и его нельзя использовать в качестве сценария, нет необходимости использовать #!
.С другой стороны, источник модуля часто содержит if __name__ == '__main__': ...
по крайней мере с некоторым тривиальным тестированием функциональности.Тогда #!
снова имеет смысл.
Одной из веских причин для использования #!
является использование сценариев Python 2 и Python 3 - они должны интерпретироваться различными версиями Python.Таким образом, вы должны помнить, что python
необходимо использовать при запуске скрипта вручную (без #!
внутри).Если у вас есть смесь таких сценариев, рекомендуется использовать #!
внутри, сделать их исполняемыми и запускать их как исполняемые файлы (chmod ...).
При использовании MS-Windows,#!
не было никакого смысла - до недавнего времени.Python 3.3 представляет Windows Python Launcher (py.exe и pyw.exe), который читает строку #!
, обнаруживает установленные версии Python и использует правильную или явно требуемую версию Python.Поскольку расширение может быть связано с программой, вы можете получить такое же поведение в Windows, как и с флагом выполнения в системах на основе Unix.