hashbang python что это

Почему люди пишут #! / Usr / bin / env python Shebang в первой строке сценария Python?

Мне кажется, что файлы без этой строки работают одинаково.

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

Если вы говорите о других платформах, конечно, это правило не применяется (но эта «линия Шебанга» не причиняет вреда и поможет, если вы когда-нибудь скопируете этот скрипт на платформу с Unix базы, такие как Linux, Mac и т. д.).

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

утилита env позволяет вам вызвать команду на пути:

Развернем немного другие ответы, вот небольшой пример того, как ваши скрипты командной строки могут попасть в неприятности из-за неосторожного использования строк /usr/bin/env Shebang:

Модуль json не существует в Python 2.5.

Если вам просто нужно различать Python 2.x и Python 3.x, последние выпуски Python 3 также предоставляют имя python3 :

Чтобы запустить скрипт python, нам нужно сказать Shell три вещи:

Команда env выполняет (2.) и (3.). Чтобы процитировать «Гравитация»

С другой стороны, env почти всегда находится в/usr/bin/env. (За исключением случаев, когда это не так; некоторые системы могут использовать/bin/env, но это довольно редкий случай и происходит только в системах, отличных от Linux.)

Возможно, ваш вопрос в этом смысле:

Вам не нужна эта линия вообще. Система вызовет python, а затем интерпретатор python запустит ваш скрипт.

Вызывая его напрямую, как обычную программу или скрипт bash, вам нужно написать эту строку, чтобы указать системе, какую программу использовать для ее запуска (и также сделать ее исполняемой с chmod 755 )

Технически, в Python это просто строка комментария.

Здесь он указывает командной консоли запустить специальную версию Python (чтобы позаботиться об остальной части файла.

Например, в mingw сценарии python используют:

и в дистрибутиве GNU/Linux это либо:

и под самой лучшей коммерческой системой Unix SW/HW из всех (OS/X) это:

Однако все эти различия могут сделать сценарий переносимым через все:

Системный вызов exec ядра Linux понимает шебанги ( #! ) изначально

Когда вы делаете на Bash:

Если это так, то остальная часть строки анализируется ядром Linux, которое выполняет еще один вызов exec с путем /usr/bin/env python и текущим файлом в качестве первого аргумента:

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

И да, вы можете сделать бесконечный цикл с:

Bash распознает ошибку:

#! просто читается человеком, но это не обязательно.

PATH мотивация поиска

Вероятно, одной большой мотивацией для существования шебангов является тот факт, что в Linux мы часто хотим запускать команды из PATH так же, как:

Но тогда, без механизма Шебанга, как Linux узнает, как запускать файлы каждого типа?

Жесткое кодирование расширения в командах:

или осуществляя поиск PATH на каждом интерпретаторе:

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

Шебангс прекрасно решает эту проблему.

Рекомендуемый способ, предложенный в документации:

2.2.2. Исполняемый файл Python Скрипты

В BSD-системах Unix сценарии Python можно сделать непосредственно исполняемыми, например сценарии Shell, поместив строку

Это соглашение Shell, которое сообщает Shell, какая программа может выполнить скрипт.

разрешает путь к двоичному файлу Python.

Вы можете попробовать эту проблему, используя virtualenv

Создавать виртуальные среды

активируйте каждую среду, затем проверьте различия

Мне кажется, что файлы без этой строки работают одинаково.

потому что python3 не поддерживает оператор печати.

Теперь перейдите и измените первую строку вашего кода на:

и он будет работать, печатая test в stdout, потому что python2 поддерживает оператор печати. Итак, теперь вы узнали, как переключаться между интерпретаторами сценариев.

Это означает больше исторической информации, чем «реального» ответа.

Solaris был худшим из всех, над которыми я когда-либо работал, частично как переход с Berkeley Unix на System V. Вы можете оказаться с вещами в/usr /,/usr/local /,/usr/ucb,/opt/и т.д. Это может сделать для некоторых действительно длинных путей. У меня есть воспоминания о том, как Sunfreeware.com устанавливал каждый пакет в свой собственный каталог, но я не могу вспомнить, содержит ли он символические ссылки в/usr/bin или нет.

О, и иногда/usr/bin находился на сервере NFS [2].

Таким образом, утилита env была разработана, чтобы обойти это.

Тогда вы могли бы написать #!/bin/env interpreter и, пока путь был правильным, у них была разумная вероятность выполнения. Конечно, разумно означало (для Python и ​​Perl), что вы также установили соответствующие переменные среды. Для bash/ksh/zsh это просто сработало.

Я скучаю по своей станции sparc. Но не много. Хорошо, теперь ты заставляешь меня троллить по E-Bay. Bastages.

[2] Да, и иногда люди все еще делают подобные вещи. И нет, я не носил ни репы OR лук на своем поясе.

Источник

Почему люди пишут #! / Usr / bin / env pybang в первой строке скрипта Python?

Мне кажется, что файлы без этой строки работают одинаково.

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

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

Утилита окр позволяет выполнить команду на пути:

Первый оставшийся аргумент указывает имя программы для вызова; ищется по PATH переменной окружения. Все оставшиеся аргументы передаются в качестве аргументов этой программе.

Немного расширив остальные ответы, приведу небольшой пример того, как ваши скрипты командной строки могут попасть в неприятности из-за неосторожного использования /usr/bin/env строк Шебанга:

Модуль json не существует в Python 2.5.

Если вам просто нужно различать Python 2.x и Python 3.x, последние выпуски Python 3 также предоставляют python3 имя:

Читайте также:  с каким промежутком начинаются схватки у первородящих

Чтобы запустить скрипт на python, нам нужно сказать оболочке три вещи:

Шебанг #! выполняет (1.). Шебанг начинается с символа, # потому что # символ является маркером комментария во многих языках сценариев. Поэтому содержимое строки Шебанга автоматически игнорируется интерпретатором.

Команда env выполняет (2.) и (3.). Чтобы процитировать «Гравитация»

С другой стороны, env почти всегда находится в / usr / bin / env. (За исключением случаев, когда это не так; некоторые системы могут использовать / bin / env, но это довольно редкий случай и происходит только в системах, отличных от Linux.)

Возможно, ваш вопрос в этом смысле:

Вам не нужна эта линия вообще. Система вызовет python, а затем интерпретатор python запустит ваш скрипт.

Вызывая его напрямую, как обычную программу или скрипт bash, вам нужно написать эту строку, чтобы указать системе, какую программу использовать для ее запуска, (а также сделать ее исполняемой с chmod 755 )

exec Системный вызов в Linux ядро понимает shebangs ( #! ) изначально

Когда вы делаете на Bash:

Если сравнение истинно, то остальная часть строки анализируется ядром Linux, которое делает еще один exec вызов с путем /usr/bin/env python и текущим файлом в качестве первого аргумента:

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

И да, вы можете сделать бесконечный цикл с:

Bash распознает ошибку:

#! бывает, что он читается человеком, но это не обязательно.

Поэтому, когда ядро ​​видит эти байты, оно берет файл ELF, правильно помещает его в память и запускает новый процесс с ним. Смотрите также: Как ядро ​​получает исполняемый двоичный файл, работающий под Linux?

PATH поисковая мотивация

Вероятно, одной большой мотивацией для существования шебангов является тот факт, что в Linux мы часто хотим запускать команды так PATH же, как:

Но тогда, без механизма shebang, как Linux узнает, как запускать файлы каждого типа?

Жесткое кодирование расширения в командах:

или осуществляя поиск PATH на каждом интерпретаторе:

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

Шебангс прекрасно решает эту проблему.

Технически, в Python это просто строка комментария.

Здесь он указывает оболочке запустить определенную версию Python (чтобы позаботиться об остальной части файла.

Например, в mingw скрипты на python используют:

и в дистрибутиве GNU / Linux это либо:

и под самой лучшей коммерческой системой Unix SW / HW из всех (OS / X) это:

Однако все эти различия могут сделать сценарий переносимым через все:

Это соглашение оболочки, которое сообщает оболочке, какая программа может выполнить скрипт.

разрешает путь к двоичному файлу Python.

Рекомендуемый способ, предложенный в документации:

В системах BSD Unish, скрипты Python можно сделать непосредственно исполняемыми, например скрипты оболочки, поставив строку

Вы можете попробовать эту проблему, используя virtualenv

Создавать виртуальные среды

активируйте каждую среду, затем проверьте различия

потому что python3 не поддерживает оператор печати.

Теперь перейдите и измените первую строку вашего кода на:

и он будет работать, печатая test на стандартный вывод, потому что python2 поддерживает оператор печати. Итак, теперь вы узнали, как переключаться между интерпретаторами сценариев.

Мне кажется, что файлы без этой строки работают одинаково.

Это означает больше исторической информации, чем «реального» ответа.

Solaris был худшим из всех, над которыми я когда-либо работал, частично как переход с Berkeley Unix на System V. Вы можете оказаться с вещами в / usr /, / usr / local /, / usr / ucb, / opt / и т.д. Это может сделать для некоторых действительно длинных путей. У меня есть воспоминания о том, как Sunfreeware.com устанавливал каждый пакет в свой собственный каталог, но я не могу вспомнить, содержит ли он символические ссылки в / usr / bin или нет.

О, и иногда / usr / bin находился на NFS-сервере [2].

Так что env утилита была разработана, чтобы обойти это.

Тогда вы могли бы написать, #!/bin/env interpreter и, пока путь был верным, у вещей был разумный шанс бежать. Конечно, разумно (для Python и Perl) означало, что вы также установили соответствующие переменные среды. Для bash / ksh / zsh это просто сработало.

Я скучаю по своей станции sparc. Но не много. Хорошо, теперь ты заставляешь меня троллить по E-Bay. Bastages.

[2] Да, и иногда люди все еще делают подобные вещи. И нет, я не носил на поясе ни репы, ни лука.

Источник

hashbang 0.1.14

pip install hashbang Copy PIP instructions

Released: Jun 14, 2019

Turn Python functions into command line interfaces

Navigation

Project links

Statistics

View statistics for this project via Libraries.io, or by using our public dataset on Google BigQuery

License: Apache Software License

Requires: Python

Maintainers

Classifiers

Project description

Hashbang

Hashbang is a Python 3 library for quickly creating command-line ready scripts. In the most basic form, a simple hashbang command can be just a simple annotation. For more complex types, it relies on Python3’s keyword-only arguments to provide a seamless syntax for command line usage.

Installation

Hashbang can be installed from pip

Quick Start Examples

Let’s start with some examples.

Simple, no argument script

The return value from the function is printed to stdout.

The additional value you get from using hashbang in this simple case is the help message, and the usage message when unexpected arguments are supplied.

Positional argument ( nargs=’?’ )

Multiple positional argument ( nargs=None )

Variadic positional argument ( nargs=’*’ )

Boolean flag (default False) ( action=’store_true’ )

Boolean flag (default True) ( action=’store_false’ )

Keyword argument ( action=’store’ )

Cheatsheet

See the API reference wiki page for the full APIs.

Command delegation

Custom command delegator

While using the regular @command decorator will still work in this situation, but tab-completion and help message will be wrong.

✓ Using @command.delegator ✗ Using @command

Argument customization

An argument can be further customized using the Argument class in the @command decorator.

For example, an alias can be added to the argument.

Help message

The help message for the command is take directly from the docstring of the function. Additionally, the help argument in Argument can be used to document each argument. A paragraph in the docstring prefixed with usage: (case insensitive) is used as the usage message.

Tab completion

Setup

Hashbang also comes with tab completion functionality, powered by argcomplete. Since argcomplete is an optional dependency of hashbang, you can install the completion feature using

After installing, to register a command for tab-completion, run

Alternatively, to activate global completion for all commands, follow the one-time setup directions in the Global completion section of argcomplete’s documentation, and then add the string PYTHON_ARGCOMPLETE_OK to the top of the file as a comment (after the #! line).

Читайте также:  какой конкурс в суворовское училище 2021 году

Specifying the choices

The simplest way to use tab completion is via the choices argument in the Argument constructor.

Using a completer

If the choices are not known ahead of time (before execution), or is too expensive to precompute, you can instead specify a completer for the argument.

Exit codes

In addition, you can also call sys.exit() inside the exception_handler if you want to return different exit codes based on the exception that was thrown. See tests/extension/custom_exit_codes.py for an example.

Further reading

For further reading, check out the wiki pages.

Источник

Почему люди пишут#! / usr/bin/env python shebang в первой строке сценария Python?

Мне кажется, что файлы работают одинаково и без этой строки.

1 ответ

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

Если вы говорите о других платформах, то, конечно, это правило неприменимо (но это «shebang line» не вредит и поможет, если вы когда-нибудь скопируете этот скрипт на платформу с базой Unix, такую как Linux, Mac и т. д.).

В вычислениях shebang (также называемый hashbang, hashpling, pound bang или crunchbang) относится к символам»#!», когда они являются первыми двумя символами в директиве интерпретатора в качестве первой строки текстового файла. В операционной системе, подобной Unix, загрузчик программы принимает наличие этих двух символов как указание на то, что файл является сценарием, и пытается выполнить этот сценарий с помощью интерпретатора, указанного rest в первой строке файла.

Программа ЭКО позволяет вызывать команды на пути:

Немного расширяя другие ответы, вот небольшой пример того, как ваши скрипты командной строки могут попасть в беду из-за неосторожного использования строк /usr/bin/env shebang:

Модуль json не существует в Python 2.5.

Если вам просто нужно различать Python 2.x и Python 3.x, последние выпуски Python 3 также содержат имя python3 :

Чтобы запустить сценарий python, нам нужно сказать shell три вещи:

Команда env выполняет (2.) и (3.). цитируя «grawity,»

С другой стороны, env почти всегда находится в /usr/bin/env. (За исключением некоторые системы могут использовать /bin/env,, но это довольно редкий случай и происходит только в системах, отличных от Linux.)

Системный вызов exec Linux kernel изначально понимает shebangs ( #! )

Когда вы это сделаете на bash:

Если сравнение верно, то rest строки анализируется Linux kernel, который делает еще один вызов exec с path /usr/bin/env python и текущим файлом в качестве первого аргумента:

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

И да, вы можете сделать бесконечный цикл с помощью:

Bash распознает ошибку:

#! просто оказывается читаемым человеком, но это не обязательно.

Поэтому, когда kernel видит эти байты, он берет файл ELF, правильно помещает его в память и запускает с ним новый процесс. См. также: как kernel получает исполняемый двоичный файл, работающий под linux?

PATH поисковая мотивация

Вероятно, одной из главных мотиваций существования shebangs является тот факт, что в Linux мы часто хотим запускать команды из PATH так же, как:

Но тогда, без механизма shebang, как бы Linux знал, как запустить каждый тип файла?

Жесткое кодирование расширения в командах:

или реализация поиска PATH на каждом интерпретаторе:

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

Шебанги прекрасно решают эту проблему.

Возможно, ваш вопрос именно в этом смысле:

Тебе вообще не нужна эта линия. Система вызовет python, а затем интерпретатор python запустит ваш сценарий.

Вызывая его непосредственно, как обычную программу или скрипт bash, вам нужно написать эту строку, чтобы указать системе, какую программу использовать для ее запуска (а также сделать ее исполняемой с помощью chmod 755 )

Технически, в Python это просто строка комментария.

Здесь он инструктирует shell запустить определенную версию Python (чтобы позаботиться о rest файла.

Основная причина этого заключается в том, чтобы сделать сценарий переносимым в разных средах операционной системы.

Например, в сценариях mingw, python используется :

а в дистрибутиве GNU / Linux это либо:

и под лучшей коммерческой системой Unix sw/hw из всех (OS/X), это:

Однако все эти различия могут сделать сценарий переносимым для всех с помощью:

Это соглашение shell, которое сообщает shell, какая программа может выполнить сценарий.

разрешает путь к двоичному файлу Python.

Это рекомендуемый способ, предложенный в документации:

В системах BSD’ish Unix Python скрипты могут быть сделаны непосредственно исполняемый файл, как и скрипты shell, помещая строку

Вы можете попробовать эту проблему с помощью virtualenv

Создание виртуальных сред

активируйте каждую среду, а затем проверьте различия

потому что python3 не поддерживает оператор печати.

Теперь идите вперед и измените первую строку вашего кода на:

и он будет работать, печатая test в stdout, потому что python2 поддерживает оператор печати. Итак, теперь вы научились переключаться между интерпретаторами сценариев.

Мне кажется, что файлы работают одинаково и без этой строки.

Если это так, то, возможно, вы запускаете программу Python на Windows? Windows не использует эту строку—вместо этого она использует расширение имени файла для запуска программы, связанной с расширением файла.

Это означает больше исторической информации, чем ответ «real».

Это было справедливо даже для различных распределений Linux. На Linux—pre-FHS[1]-у вас может быть python в /usr/bin/ или /usr/local/bin/. Или он мог не быть установлен, поэтому вы построили свой собственный и поместили его в

Solaris был худшим, над чем я когда-либо работал, частично как переход от Berkeley Unix к System V. Вы можете закончить с вещами в /usr/, /usr/local/, /usr/ucb, /opt/ и т. д. Это может привести к некоторым действительно длинным путям. У меня есть воспоминания о том, как Sunfreeware.com устанавливал каждый пакет в свой собственный каталог,но я не могу вспомнить, связывал ли он двоичные файлы в /usr/bin или нет.

О, и иногда /usr/bin был на NFS server[2].

Таким образом, утилита env была разработана, чтобы обойти это.

Это было важно, потому что люди передавали shell скриптов (например, perl и python), и если вы жестко закодировали /usr/bin/python на своей рабочей станции Red Hat Linux, то она будет плохо работать на SGI. well, нет, я думаю, что IRIX поставил python в нужное место. Но на станции Sparc он может вообще не работать.

Читайте также:  радио дача на каком диапазоне работает

Я скучаю по своей станции СПАРК. Но не очень много. О’кей, теперь ты заставляешь меня болтаться по электронной бухте. Бастионы.

[2] да, и иногда люди все еще делают такие вещи. И нет, я не носил на поясе ни репы, ни лука.

Обратите внимание, что имя виртуальной среды встроено в путь к интерпретатору Python. Поэтому жесткое кодирование этого пути в вашем скрипте вызовет две проблемы:

Чтобы терпеть различия между платформами, весь новый код, который должен вызывать интерпретатор Python, не должен указывать python, а скорее должен указывать либо python2, либо python3 (или более конкретный python2.x и python3.x версии; см. Примечания к миграции ). это различие должно быть сделано в shebangs, при вызове из сценария shell, при вызове через вызов system() или при вызове в любом другом контексте.

Он сообщает интерпретатору, с какой версией python запускать программу, если у вас есть несколько версий python.

Строка #!/bin/bash/python3 или #!/bin/bash/python указывает, какой компилятор python использовать. Возможно, у вас установлено несколько версий python. Например,
a.py :

это скрипт python3 и
b.py :

Он позволяет вам выбрать исполняемый файл, который вы хотите использовать; что очень удобно, если, возможно, у вас есть несколько установок python и разные модули в каждом из них, и вы хотите выбрать.

Похожие вопросы:

В начале всех моих исполняемых скриптов Python я ставлю строку shebang : #!/usr/bin/env python Я запускаю эти сценарии в системе, где env python дает среду Python 2.2. Мои скрипты быстро терпят.

Возможный Дубликат : Почему люди пишут #! / usr/bin/env python в первой строке скрипта Python? Что означает строка “#!/bin/sh” в скрипте UNIX shell? Это комментарий, и он должен быть.

Python 2.7.3 на OSX 10.8.2 В настоящее время я пишу сценарий, который импортирует модуль markdown. Я использовал #!/usr/bin/env python shebang для переносимости. Сценарий работает нормально, когда я.

Я понимаю разницу между запуском сценария python, например: #!/usr/bin/env python или #!/usr/bin/python Из того, что я понял, просто выполняет python, как мы сделали бы в нашем shell, поэтому он.

Источник

Я должен поставить #! (shebang) в скриптах Python, и какую форму он должен принимать?

Я должен положить в мой набор скриптов Python? В какой форме?

они одинаково портативны? Какая форма используется больше всего?

Примечание: the торнадо проект использует shebang. С другой стороны,Джанго нет.

10 ответов:

строка shebang в любом скрипте определяет способность скрипта выполняться как автономный исполняемый файл без ввода python предварительно в терминале или при двойном щелчке по нему в файловом менеджере (при правильной настройке). Это не обязательно, но обычно помещается туда, поэтому, когда кто-то видит файл, открытый в Редакторе, они сразу знают, на что они смотрят. Однако, какую линию shebang вы используете и важно.

правильно использование для скриптов Python 3:

следующее не следует использовать (за исключением редкого случая, когда вы пишете код, который совместим с обоими Python 2.x и 3.x):

причина этих рекомендаций, приведенных в PEP 394, это python может относиться либо к python2 или python3 on различная система. В настоящее время это относится к python2 на большинстве дистрибутивов, но это, вероятно, изменится в какой-то момент.

кроме того, не используйте:

«python может быть установлен в /usr / bin / python или /bin / python в тех случаи, описанные выше #! потерпеть неудачу.»

Это действительно просто дело вкуса. Добавление shebang означает, что люди могут вызывать скрипт напрямую, если они хотят (предполагая, что он помечен как исполняемый); опуская его просто означает python должен быть вызван вручную.

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

я должен положить в мой набор скриптов Python?

поместите shebang в скрипт Python, чтобы указать:

это одинаково портативный? Какая форма используется больше всего?

если вы пишете shebang вручную тогда всегда используйте #!/usr/bin/env python если у вас нет особых причин не использовать его. Эта форма понимается даже на Windows (Python launcher).

. python должен использоваться в строке shebang только для скриптов, которые источник совместим с Python 2 и 3.

в рамках подготовки к возможному изменению по умолчанию версия Python, Python 2 только скрипты должны быть обновлены, чтобы быть источником совместим с Python 3 или еще использовать python2 в линии shebang.

Если у вас есть несколько версий Python и скрипт должен работать под определенной версией, она-bang может гарантировать, что правильный используется, когда скрипт выполняется напрямую, например:

обратите внимание, что скрипт все еще может быть запущен через полную командную строку Python или через импорт, и в этом случае она-bang игнорируется. Но для скриптов, запускаемых напрямую, это достойная причина использовать she-bang.

#!/usr/bin/env python как правило, лучший подход, но это помогает в особых случаях.

обычно было бы лучше установить виртуальную среду Python, и в этом случае generic #!/usr/bin/env python определит правильный экземпляр Python для virtualenv.

вы должны добавить shebang, если скрипт предназначен для выполнения. Вы также должны установить скрипт с установочным программным обеспечением, которое изменяет shebang на что-то правильное, чтобы он работал на целевой платформе. Примеры этого-distutils и Distribute.

цель shebang заключается в том, чтобы скрипт распознал тип интерпретатора, когда вы хотите выполнить скрипт из оболочки. В основном, и не всегда, вы выполняете сценарии, предоставляя интерпретатор извне. Пример использования: python-x.x script.py

Это будет работать даже если у вас нет Декларатор притон.

почему первый более «портативный», потому что, /usr/bin/env содержит PATH декларация, которая учитывает все пункты назначения, где ваша система исполняемые файлы находятся.

Примечание: Tornado строго не использует shebangs, а Django строго Нет. это зависит от того, как вы выполняете основную функцию вашего приложения.

также: это не зависит от Python.

иногда, если ответ не очень ясен (я имею в виду, что вы не можете решить, да или нет), то это не имеет большого значения, и вы можете игнорировать проблему до тех пор, пока ответ и очистить.

The #! только цель для запуска скрипта. Django загружает источники самостоятельно и использует их. Ему никогда не нужно решать, какой интерпретатор следует использовать. Сюда, в #! на самом деле не имеет смысла здесь.

из моего предыдущего Python 2.7 установка. Я изменил значение этого раздела реестра на

и обработка линии Shebang запуска Python работала, как описано выше.

Источник

Сказочный портал