2009-03-15 10 views

Respuesta

104
>>> import os 
>>> import sys 
>>> os.path.dirname(sys.executable) 
'C:\\Python25' 
+0

¿Qué pasa si estás dentro de un virtualenv? Esto no funcionará entonces. – user60561

+0

@ user60561 Debe darle la ruta al ejecutable Python de Virtualenv. No conozco una manera de obtener el pitón OS, en ese caso, pero me gustaría saber por qué lo necesitarías si estuvieras corriendo desde Virtualenv. – elo80ka

+0

Mi script crea un virtualenv, por lo que usa el sistema python para hacer eso. Sin embargo, me has hecho pensar, tal vez eso no sea necesario ... Lo verificaré el lunes, ¡gracias! – user60561

8

En el paquete sys, se puede encontrar una gran cantidad de información útil acerca de la instalación:

import sys 
print sys.executable 
print sys.exec_prefix 

No estoy seguro de lo que esto le dará en su sistema Windows, pero en mi Mac executable puntos a la Python binary y exec_prefix a la raíz de la instalación.

También podría intentar esto para la inspección de su módulo sys:

import sys 
for k,v in sys.__dict__.items(): 
    if not callable(v): 
     print "%20s: %s" % (k,repr(v)) 
+0

@GuoH podemos hacer lo mismo con el archivo por lotes? – Patrick

+0

Podría hacer algo como 'python -c 'import sys; print sys.executable" ' –

11

En mi instalación de ventanas, consigo estos resultados:

>>> import sys 
>>> sys.executable 
'C:\\Python26\\python.exe' 
>>> sys.platform 
'win32' 
>>> 

(También puede buscar en sys.path para lugares razonables.)

+0

pero ¿cómo podemos hacer lo mismo usando un archivo por lotes? – Patrick

35

Si necesita conocer el archivo instalado bajo Windows sin al iniciar el intérprete de Python, eche un vistazo al registro de Windows.

Cada versión de Python instalado tendrá una clave de registro, ya sea en:

  • HKLM\SOFTWARE\Python\PythonCore\versionnumber\InstallPath
  • HKCU\SOFTWARE\Python\PythonCore\versionnumber\InstallPath

En Windows de 64 bits, que estará bajo la clave Wow6432Node:

  • HKLM\SOFTWARE\Wow6432Node\Python\PythonCore\versionnumber\InstallPath
+0

esto parece ser falso en Windows 7, al menos para python 2.7 – sharkin

+0

¿Dónde está la información ubicada en Windows 7? Si tiene una computadora con Windows 7 a mano, ¿podría hacer una búsqueda de registro para Python y PythonCore? Y vea si encuentra un valor de InstallPath en alguna parte. – codeape

+7

En las versiones de 64 bits de Windows (que probablemente esté utilizando) estará bajo la clave Wow6432Node, IE HKLM \ SOFTWARE \ Wow6432Node \ Python \ PythonCore \ versionnumber \ InstallPath –

2

Si alguien tiene que hacer esto en C# que estoy usando el siguiente código:

static string GetPythonExecutablePath(int major = 3) 
{ 
    var software = "SOFTWARE"; 
    var key = Registry.CurrentUser.OpenSubKey(software); 
    if (key == null) 
     key = Registry.LocalMachine.OpenSubKey(software); 
    if (key == null) 
     return null; 

    var pythonCoreKey = key.OpenSubKey(@"Python\PythonCore"); 
    if (pythonCoreKey == null) 
     pythonCoreKey = key.OpenSubKey(@"Wow6432Node\Python\PythonCore"); 
    if (pythonCoreKey == null) 
     return null; 

    var pythonVersionRegex = new Regex("^" + major + @"\.(\d+)-(\d+)$"); 
    var targetVersion = pythonCoreKey.GetSubKeyNames(). 
             Select(n => pythonVersionRegex.Match(n)). 
             Where(m => m.Success). 
             OrderByDescending(m => int.Parse(m.Groups[1].Value)). 
             ThenByDescending(m => int.Parse(m.Groups[2].Value)). 
             Select(m => m.Groups[0].Value).First(); 

    var installPathKey = pythonCoreKey.OpenSubKey(targetVersion + @"\InstallPath"); 
    if (installPathKey == null) 
     return null; 

    return (string)installPathKey.GetValue("ExecutablePath"); 
} 
+1

¿No existirían HKCU y HKLM para la mayoría de los usuarios? Esto parecería perder instancias de Python instaladas globalmente. – jtbr

+0

Sí, parece que he creado un error allí. – Peter

6

Si tiene pitón en la variable de entorno por lo que también puede utilizar el comando escriba cmd como

>>> where python

command line image

8

sería cualquiera de

  • C: \ Python36
  • C: \ Users \ (Tu conectado usuario) \ AppData \ Local \ Programas \ Python \ Python36
+0

my path of python 3.6 en win10: 'C: \ Users \ YANG.LEI \ AppData \ Local \ Programs \ Python \ Python36-32' –

+0

correcto para python 3 – danday74

Cuestiones relacionadas