2010-04-07 23 views

Respuesta

337

sys.executable contiene la ruta completa del intérprete de Python actualmente en ejecución.

import sys 

print(sys.executable) 

que ahora es documented here

+0

Esto no parece funcionar desde scripts con un shebang '/ usr/bin/env python' ejecutado como' env -i./Script'. En ese caso, devuelve el directorio de trabajo actual. –

+1

@JohnFreeman: Probé esto en una caja GNU/Linux con coreutils GNU 8.4 (env) y Python 3.4.2. '#!/usr/bin/env python3' devolverá la ruta binaria completa correcta a través de' sys.executable'. Tal vez su versión de sistema operativo o Python se comporta de forma ligeramente diferente. – kevinarpe

+0

Funciona para mí con Python 3, pero no con Python 2. –

-1

intentar el comando whereis:

whereis python 
+7

Eso te dice lo que hay en tu camino, pero no indica si el programa quiere ejecutar el script actual. – vy32

+4

y no es portátil para algunos sistemas operativos, como Windows – wojtow

+7

. La pregunta era sobre "... dentro del script de Python actualmente en ejecución?". 'whereis' no está dentro de la secuencia de comandos de Python. – guettli

7

Simplemente observando una forma diferente de utilidad cuestionable, utilizando os.environ:

import os 
python_executable_path = os.environ['_'] 

por ejemplo,

$ python -c "import os; print(os.environ['_'])" 
/usr/bin/python 
+1

inútil pero divertido :) (quizás también no portátil) – eudoxos

+1

Parece que '_' está establecido por el caparazón. Pero no es necesario establecerlo, por lo que podría dar la respuesta incorrecta. – vy32

+0

No funciona, al menos en Windows con Anaconda. –

1

Hay algunas formas alternativas para averiguar la pitón se utilizan actualmente en Linux es: 1) which python comando. 2) command -v python comando 3) type python comando

mismo modo en Windows con Cygwin también dará lugar a la misma.

[email protected] ~ 
$ which python 
/usr/bin/python 

[email protected] ~ 
$ whereis python 
python: /usr/bin/python /usr/bin/python3.4 /usr/lib/python2.7 /usr/lib/python3.4  /usr/include/python2.7 /usr/include/python3.4m /usr/share/man/man1/python.1.gz 

[email protected] ~ 
$ which python3 
/usr/bin/python3 

[email protected] ~ 
$ command -v python 
/usr/bin/python 

[email protected] ~ 
$ type python 
python is hashed (/usr/bin/python) 

Si ya está en el shell de python. Prueba cualquiera de estos. Nota: esta es una forma alternativa. No es la mejor manera pitónica.

>>> 
>>> import os 
>>> os.popen('which python').read() 
'/usr/bin/python\n' 
>>> 
>>> os.popen('type python').read() 
'python is /usr/bin/python\n' 
>>> 
>>> os.popen('command -v python').read() 
'/usr/bin/python\n' 
>>> 
>>> 
+3

"desde el script de Python actualmente en ejecución" escribió el OP – nodakai

+0

Los ejemplos de "ya está en el shell de python", todos suponen que el shell de python iniciado es lo que obtienes si escribes 'python' desde el shell. Si comienzas con una ruta diferente explícita (por ejemplo '/ opt/python/2.5/bin/python'), o usas' python3' y luego ejecutas esos comandos de python, ** todos ellos produjeron respuestas incorrectas ** y eso no tiene nada que ver con no ser la forma más pitónica, es simplemente erróneo. – Anthon

Cuestiones relacionadas