используя #! / usr / bin / env python3 shebang с Windows - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь запустить скрипт Python из командной строки как команду в Windows - поэтому не нужно использовать «Python» или «.py».Если мой сценарий называется «testing.py», я пытаюсь превратить это имя в команду и вызывать «тестирование» из командной строки.

При просмотре документов мне кажется, что мне нужен этот шебанг #!/usr/bin/env python, пока в моем PATH есть Python.

https://docs.python.org/3/using/windows.html#shebang-lines

У меня также есть папка script в моем PATH, поэтому что-то вроде «testing.py» в настоящее время работает скомандная строка.

Согласно документам и данному руководству, https://dbader.org/blog/how-to-make-command-line-commands-with-python

Я смогу вызвать мой скрипт на Python, просто "протестировав", если у меня есть правильные пути в PATH и вышеупомянутом шебанге.Однако я не могу запустить скрипт без добавления «.py».

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Принятый ответ @AKX неверен для Windows 10, конечно, в самой последней Windows 10 (1903), если не раньше.

У меня установлено несколько версий Python (2.7, 3.6, 3.7 и большинствонедавно Python 3.8b1).Я годами использовал #!/usr/bin/env shebang в своих сценариях для кросс-платформенной совместимости (обычно, чтобы отличить сценарии Py2 от Py3).

Я создал небольшой сценарий в папке (C:\so_test\awtest.py):

#!/usr/bin/env python3.6
import sys
print(sys.version)

Если я запускаю это с awtest.py или просто awtest, я получаю сообщение 3.6.x (показывая, что оно работает с Python 3.6).Если я изменю шебанг на 3,7, я получу сообщение 3.7.x.Если я изменю shebang на #!/usr/bin/env python3, я получу самую последнюю версию Python (3.8).

Теперь, если я добавлю эту папку в свой путь (path=%PATH%;C:\so_test в командном окне, которое вы тестируете)в или в главном env vars (вам нужно перезапустить командное окно, если вы сделаете последнее, хотя)), я могу перейти в другой каталог и запустить awtest или awtest.py, и они все еще работают и ссылаются напапка в пути.Если я удалю папку сценария из пути, эти файлы больше не будут найдены.

Хотя я не обязательно ожидаю, что это сработает в Windows до 10 или Python 2.7, эта функциональность кажется подходящей.идти вперед.

0 голосов
/ 02 января 2019

Нет, Windows не поддерживает линии Шебанга.

Связанная с вами документация относится к установщику py, установленному Python, который может интерпретировать различные строки shebang для выбора версии Python для запуска сценария.

setuptools может генерировать .exes для ваших скриптов Python, , но он немного вовлечен и уже предполагает, что у вас есть пакет с setup.py и т. Д.

Локально, если вам действительно, действительно нужно это, вы, вероятно, могли бы добавить .py к PATHEXT переменной среды , поэтому командная строка Windows ищет .py s выглядит как .exe s (и другие); текущее современное значение по умолчанию - .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC). Однако, естественно, это не будет масштабироваться для распространения приложений, так как все ваши пользователи должны будут установить это тоже.

Я рекомендую придерживаться этого скучного старого python testing.py, на самом деле.

...