chemin multi-plateforme pour spécifier l'interpréteur Python lors de l'exécution avec execv

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

  •  10-10-2019
  •  | 
  •  

Question

Je suis actuellement un des scripts Python à la fois sur Linux et Windows 7. Le fichier est exécuté dans un style execv avec lequel je veux dire que l'interprète est définie au début du fichier dans une commande.

système Dans Windows, la spécification interprète est:

#!C:\Python26\python.exe

Cependant, dans Linux cela doit être

#!/usr/bin/python

Je voudrais lancer ce script dans les deux systèmes sans avoir à changer cette ligne encore et encore.

Je l'ai essayé ce qui suit:

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

ainsi que:

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

: est-il possible que je pourrais spécifier plusieurs interprètes

Était-ce utile?

La solution

#!/usr/bin/env python

Ce appellera le programme env pour rechercher votre chemin pour un exécutable Python.

Si vous devez vous assurer une version spécifique de Python, vous pouvez le faire par exemple:.

#!/usr/bin/env python2.5

Autres conseils

En fonction de ce que vous essayez de faire, cela pourrait être un peu lourd poids, mais 0install peut exécuter votre programme sera l'interpréteur Python approprié pour votre plate-forme. Dans la description XML de votre programme, faire quelque chose comme ceci (par exemple si vous voulez 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>

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

Ceci également 0install télécharger une version appropriée de Python si l'utilisateur n'a pas déjà.

Notez que vous pouvez faire cela même si vous êtes seulement Linux ciblage, car avec Python 3 il n'y a pas un seul #! ligne qui fonctionne sur toutes les plateformes (certaines plates-formes, par exemple Arche, exigent « python2 » pas « python », tandis que d'autres, par exemple Debian, ne fournissent pas « python2 », seul « python »).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top