chemin multi-plateforme pour spécifier l'interpréteur Python lors de l'exécution avec execv
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
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 »).