Respuestas:
sys.executable contiene la ruta completa del intérprete de Python actualmente en ejecución.
import sys
print(sys.executable)
que ahora está documentado aquí
#!/usr/bin/env python3devolverá la ruta binaria completa correcta a través de sys.executable. Quizás su sistema operativo o versión de Python se comporta de manera ligeramente diferente.
pythony python3comandos y se imprime el ejecutable correcto.
Simplemente observando una forma diferente de utilidad cuestionable, usando os.environ:
import os
python_executable_path = os.environ['_']
p.ej
$ python -c "import os; print(os.environ['_'])"
/usr/bin/python
_lo establece el shell. Pero no es necesario establecerlo, por lo que esto podría dar la respuesta incorrecta.
Hay algunas formas alternativas de descubrir que el python utilizado actualmente en Linux es: 1) which pythoncomando. 2) command -v pythoncomando 3) type pythoncomando
Del mismo modo, en Windows con Cygwin también resultará igual.
kuvivek@HOSTNAME ~
$ which python
/usr/bin/python
kuvivek@HOSTNAME ~
$ 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
kuvivek@HOSTNAME ~
$ which python3
/usr/bin/python3
kuvivek@HOSTNAME ~
$ command -v python
/usr/bin/python
kuvivek@HOSTNAME ~
$ type python
python is hashed (/usr/bin/python)
Si ya estás 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'
>>>
>>>
pythondesde el shell. Si comienza con una ruta diferente explícita (p /opt/python/2.5/bin/python. Ej. ), O usa python3y luego ejecuta 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, simplemente está mal.
/usr/bin/env pythonejecutado comoenv -i ./script. En ese caso, devuelve el directorio de trabajo actual.