обозначение шебанга: python сценарии в windows и linux?

<p>у меня есть несколько небольших служебных скриптов, написанных на python, которые я хочу использовать как в windows, так и в linux. я хочу избежать явного вызова интерпретатора python. есть ли простой способ указать нотацию шебанга на правильные места в windows и linux? если нет, есть ли другой способ разрешить неявный вызов интерпретатора python как в windows, так и в linux без необходимости изменять сценарий при передаче между операционными системами?</p><p>правка: поддержка shebang в windows предоставляется cygwin, но я хочу использовать собственный интерпретатор windows python в windows, а не cygwin.</p><p>редактирование # 2: похоже, что нотация шебанга переопределяет ассоциации файлов в терминалах cygwin. я думаю, я мог бы просто удалить cygwin python и symlink/usr/bin/python для windows-родного python.</p>

<p>если вы не используете cygwin, windows не имеет поддержки shebang. однако, когда вы устанавливаете python, он добавляется как ассоциация файлов для файлов .py. если вы введете только имя вашего скрипта в командной строке или дважды щелкните его в windows explorer, он будет работать через python.</p><p>что я делаю, так это включаю <code>#!/usr/bin/env python</code> shebang в мои скрипты. это позволяет поддерживать shebang в linux. если вы запустите его на компьютере windows с установленным python, тогда должна быть установлена файловая ассоциация, и она также будет работать.</p>

<p>читайте о <a href="https://docs.python.org/3/using/windows.html#python-launcher-for-windows">python launcher для windows</a> в документации, которая была первоначально описана в <a href="https://www.python.org/dev/peps/pep-0397">pep 397</a> . это позволяет вам определять пользовательские конфигурации shebang в ini (например, использовать pypy), но из коробки вы можете использовать виртуальные shebangs, такие как <code>#!/usr/bin/env python3</code>, или shebangs с реальными путями, такими как <code>#!"c:\python33\python.exe"</code> (цитирование необходимо для путей, содержащих пробелы). вы также можете добавить параметры командной строки в shebang. например, следующий shebang добавляет опцию для входа в интерактивный режим после завершения сценария: <code>#!/usr/bin/python3 -i</code>.</p><p>python 3.3 связывает типы файлов сценариев .py (console) и .pyw (gui) с соответственно именованными программами запуска, py.exe и pyw.exe, чтобы включить поддержку shebang для сценариев в windows. новые программы запуска устанавливаются в корневую папку windows (т.е. <code>%systemroot%</code>) при установке для всех пользователей. в противном случае вы захотите добавить каталог установки в <code>path</code>, чтобы использовать py.exe в командной консоли. затем из командной строки вы можете запустить <code>py -2</code>, <code>py -3</code>, <code>py -2.6</code>, <code>py -3.3-32</code> (32-битный) и так далее. модуль запуска удобен в сочетании с <code>-m</code> для запуска модуля в виде сценария, например <code>py -3 -m pip install</code>.</p><p>также есть версия <a href="https://bitbucket.org/vinay.sajip/pylauncher">pylauncher</a> , которую можно установить отдельно, если вы используете только python 2.</p>

<p>установите pywin32. одна из приятных вещей заключается в настройке ассоциации файлов * .py с интерпретатором python.</p>

<p>не с шебангом ... но вы можете установить ассоциацию файлов, см. <a href="https://stackoverflow.com/questions/1286873/perl-on-windows-file-associations-and-i-o-redirection/">этот so вопрос</a> , который касается perl и связанных ответов, которые также будут уместны, так как есть известные проблемы с windows и перенаправление stdin/out ...</p>