2009-04-14 22 views
80

Básicamente quiero obtener un control del intérprete de python para poder pasar un archivo de script para ejecutarlo (desde una aplicación externa).¿Cómo obtener la ubicación python.exe mediante programación?

+3

@Bhargav Rao: ¿cómo puede esta cuestión, que se le pidió 1 año _antes_ la pregunta que se supone que es un duplicado de, ser un duplicado de la misma? Es al revés. – mhawke

+0

@mhawke El otro tenía más vistas que esta y estaba mejor redactado. Por lo tanto, lo engañé en la dirección inversa. TBH, ambos dicen lo mismo, así que incluso podemos marcar para la fusión. –

+2

@BhargavRao: sí, está mejor escrito y es probable que el título sea el responsable. También la respuesta aceptada es mejor y (ahora) incluye un enlace a la documentación, por lo que, en general, creo que tienes razón. – mhawke

Respuesta

135

Esto funciona en Linux, ¿quizás en Windows también?

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

Sí - >>> import sys | >>> imprime sys.executable | C: \ Python25 \ pythonw.exe – Smashery

+2

Funciona también en Mac OS X. – FogleBird

+2

Creo que en una aplicación compilada py2exe, apuntaría al ejecutable de la aplicación, y no al python.exe. Alguien debería confirmar sin embargo. – FogleBird

4

Creo que depende de cómo instaló Python. Tenga en cuenta que puede tener múltiples instalaciones de Python, lo hago en mi máquina. Sin embargo, si se instala mediante un MSI de una versión de Python 2.2 o superior, creo que crea una clave de registro, así:

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

que da este valor en mi máquina:

C: \ Python25 \ python.exe

que acaba de leer la clave de registro para obtener la ubicación.

Sin embargo, puede instalar Python a través de un modelo similar a xcopy que puede tener en un lugar arbitrario, y solo tiene que saber dónde está instalado.

+0

Si está en las rutas de la aplicación, ni siquiera necesita saber la ubicación, ¿verdad? ;) – Gleb

+8

Mirar en el registro no es muy útil, porque no sabe si está ejecutando el python del que está hablando el del registro. – GreenAsJade

30

sys.executable no es confiable si se trabaja en un entorno python incrustado. Mis sugerencias es a deducirlo de

import os 
os.__file__ 
Cuestiones relacionadas