forma de especificar Python intérprete cuando se ejecuta con execv multiplataforma

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

  •  10-10-2019
  •  | 
  •  

Pregunta

Actualmente estoy ejecutando un scripts de Python tanto en Linux y Windows 7. El archivo se ejecuta en un estilo execv con lo cual quiero decir que el intérprete se define en el principio del archivo en un comando.

En el sistema Windows, el intérprete es la especificación:

#!C:\Python26\python.exe

Sin embargo, en Linux esto tiene que ser

#!/usr/bin/python

Me gustaría ejecutar este script en ambos sistemas sin tener que cambiar esta línea una y otra vez.

He intentado el siguiente:

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

así como:

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

Así que: ¿hay alguna manera de que pudiera especificar varios intérpretes

¿Fue útil?

Solución

#!/usr/bin/env python

que llamará al programa env buscar su PATH para un ejecutable de Python.

Si es necesario asegurarse de una versión específica de Python que puede hacer por ejemplo:.

#!/usr/bin/env python2.5

Otros consejos

En función de lo que estás tratando de hacer, esto podría ser un peso pesado poco, pero 0install puede ejecutar su programa será el intérprete de Python adecuado para la plataforma. En la descripción XML de su programa, hacer algo como esto (por ejemplo, si quieres 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>

Ver: http://www.0install.net/local-feeds.html

Esto también hará que 0install descargar una versión adecuada de Python si el usuario no tiene ya.

Tenga en cuenta que es posible que desee hacer esto incluso si sólo apuntan a Linux, ya que con Python 3 no existe una única #! línea que funciona en todas las plataformas (algunas plataformas, por ejemplo, requieren Arch "python2" no "pitón", mientras que otros, por ejemplo Debian, no proporcionan "python2", sólo "pitón").

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top