2009-04-14 10 views
80

Fondamentalement, je veux obtenir un handle de l'interpréteur python afin que je puisse passer un fichier de script à exécuter (à partir d'une application externe).Comment obtenir l'emplacement python.exe par programme?

+3

@Bhargav Rao: comment cette question, qui a été demandé 1 année _avant_ la question qu'il est censé être un double de, être un duplicata de celui-ci? C'est l'inverse. – mhawke

+0

@mhawke L'autre avait plus de vues que cela et était mieux formulé. D'où je l'ai dupé dans le sens inverse. TBH, Les deux disent la même chose, Donc nous pouvons même signaler la fusion. –

+2

@BhargavRao: oui, c'est mieux écrit et le titre est probablement responsable de ça. Aussi la réponse acceptée est meilleure et (maintenant) inclut un lien vers la documentation, donc globalement je pense que vous avez raison. – mhawke

Répondre

135

Cela fonctionne sous Linux, peut-être aussi sous Windows?

>>> import sys 
>>> print sys.executable 
/usr/bin/python 
+2

Oui - >>> import sys | >>> print sys.executable | C: \ Python25 \ pythonw.exe – Smashery

+2

Fonctionne également sous Mac OS X. – FogleBird

+2

Je pense que dans une application compilée py2exe, il pointe vers l'exécutable pour l'application, et non pas le python.exe. Quelqu'un devrait confirmer cependant. – FogleBird

4

Je pense que cela dépend de la façon dont vous avez installé Python. Notez que vous pouvez avoir plusieurs installations de python, je le fais sur ma machine. Toutefois, si vous installez via une msi d'une version de Python 2.2 ou au-dessus, je crois qu'il crée une clé de Registre comme ceci:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths \ Python.exe

qui donne cette valeur sur ma machine:

C: \ Python25 \ Python.exe

Vous venez de lire la clé de registre pour obtenir l'emplacement. Cependant, vous pouvez installer python via un modèle de type xcopy que vous pouvez avoir dans un endroit arbitraire, et il vous suffit de savoir où il est installé.

+0

Si c'est dans App Paths, vous n'avez même pas besoin de connaître l'emplacement, n'est-ce pas? ;) – Gleb

+8

La recherche dans le registre n'est pas vraiment utile, car vous ne savez pas si vous utilisez le python dont parle le registre. – GreenAsJade

30

sys.executable n'est pas fiable si vous travaillez dans un environnement python intégré. Mes suggestions est de déduire de

import os 
os.__file__ 
Questions connexes