it-swarm.com.ru

Обозначение Шебанга: Python Сценарии в Windows и Linux?

У меня есть несколько небольших служебных скриптов, написанных на Python, которые я хочу использовать как в Windows, так и в Linux. Я хочу избежать явного вызова интерпретатора Python. Есть ли простой способ указать нотацию Шебанга на правильные места в Windows и Linux? Если нет, есть ли другой способ разрешить неявный вызов интерпретатора Python как в Windows, так и в Linux без необходимости изменять сценарий при передаче между операционными системами?

Правка: Поддержка Shebang в Windows предоставляется Cygwin, но я хочу использовать собственный интерпретатор Windows Python в Windows, а не Cygwin.

Редактирование # 2: похоже, что нотация Шебанга переопределяет ассоциации файлов в терминалах Cygwin. Я думаю, я мог бы просто удалить Cygwin Python и ​​symlink/usr/bin/python для Windows-родного Python.

54
dsimcha

Если вы не используете Cygwin, Windows не имеет поддержки Shebang. Однако, когда вы устанавливаете python, он добавляется как ассоциация файлов для файлов .py. Если вы введете только имя вашего скрипта в командной строке или дважды щелкните его в Windows Explorer, он будет работать через python.

Что я делаю, так это включаю #!/usr/bin/env python Shebang в мои скрипты. Это позволяет поддерживать Shebang в Linux. Если вы запустите его на компьютере Windows с установленным python, тогда должна быть установлена ​​файловая ассоциация, и она также будет работать.

32
Spencer Rathbun

Читайте о Python Launcher для Windows в документации, которая была первоначально описана в PEP 397 . Это позволяет вам определять пользовательские конфигурации Shebang в ini (например, использовать pypy), но из коробки вы можете использовать виртуальные shebangs, такие как #!/usr/bin/env python3, или shebangs с реальными путями, такими как #!"C:\Python33\python.exe" (цитирование необходимо для путей, содержащих пробелы). Вы также можете добавить параметры командной строки в Shebang. Например, следующий Shebang добавляет опцию для входа в интерактивный режим после завершения сценария: #!/usr/bin/python3 -i.

Python 3.3 связывает типы файлов сценариев .py (console) и .pyw (GUI) с соответственно именованными программами запуска, py.exe и pyw.exe, чтобы включить поддержку Shebang для сценариев в Windows. Новые программы запуска устанавливаются в корневую папку Windows (т.е. %SystemRoot%) при установке для всех пользователей. В противном случае вы захотите добавить каталог установки в PATH, чтобы использовать py.exe в командной консоли. Затем из командной строки вы можете запустить py -2, py -3, py -2.6, py -3.3-32 (32-битный) и так далее. Модуль запуска удобен в сочетании с -m для запуска модуля в виде сценария, например py -3 -m pip install.

Также есть версия pylauncher , которую можно установить отдельно, если вы используете только Python 2.

31
eryksun

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

1
Wai Yip Tung

Не с Шебангом ... но вы можете установить ассоциацию файлов, см. этот SO вопрос , который касается Perl и связанных ответов, которые также будут уместны, так как есть известные проблемы с Windows и перенаправление stdin/out ...

0
Chris J