Кроссплатформенный способ указать интерпретатор Python при запуске с ExecV

StackOverflow https://stackoverflow.com/questions/3988598

  •  10-10-2019
  •  | 
  •  

Вопрос

В настоящее время я использую сценарии Python как на Linux, так и на Windows 7. Файл выполняется в стиле execv, с которым я имею в виду, что интерпретатор определяется в начале файла в команде.

В системе Windows спецификация интерпретатора:

#!C:\Python26\python.exe

Однако в Linux это должно быть

#!/usr/bin/python

Я хотел бы запустить этот скрипт в обеих системах, не изменяя эту линию снова и снова.

Я попробовал следующее:

#!C:\Python26\python.exe
#!/usr/bin/python

так же как:

#!C:\Python26\python.exe;/usr/bin/python

Итак: есть ли способ указать несколько переводчиков?

Это было полезно?

Решение

#!/usr/bin/env python

Это позвонит env Программа для поиска вашего пути для исполняемого файла Python.

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

#!/usr/bin/env python2.5

Другие советы

В зависимости от того, что вы пытаетесь сделать, это может быть немного тяжелым, но 0Install может запустить вашу программу, соответствующий интерпретатор Python для вашей платформы. В описании XML вашей программы сделайте что -то подобное (например, если вы хотите Python> = 2,6, <3):

<command name="run" path="myprog.py">
  <runner interface="http://repo.roscidus.com/python/python">
    <version not-before="2.6" before="3"/>
  </runner>
</command>

Видеть: http://www.0install.net/local-feeds.html

Это также сделает 0Install загрузить подходящую версию Python, если у пользователя его еще нет.

Обратите внимание, что вы можете сделать это, даже если вы только нацелены на Linux, потому что с Python 3 нет единого #! Линия, которая работает на всех платформах (некоторые платформы, например, арка, требуют «python2», а не «python», в то время как другие, например, Debian, не предоставляют «Python2», только «Python»).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top