Réponses:
sys.executable
contient le chemin complet de l'interpréteur Python en cours d'exécution.
import sys
print(sys.executable)
qui est maintenant documenté ici
#!/usr/bin/env python3
renverra le chemin binaire complet correct via sys.executable
. Peut-être que votre version OS ou Python se comporte légèrement différemment.
python
et les python3
commandes et l'exécutable correct imprimé.
Notant simplement une manière différente d’utilité douteuse, en utilisant os.environ
:
import os
python_executable_path = os.environ['_']
par exemple
$ python -c "import os; print(os.environ['_'])"
/usr/bin/python
_
soit réglé par le shell. Mais cela n'a pas besoin d'être réglé, donc cela pourrait donner la mauvaise réponse.
Il existe plusieurs façons alternatives de comprendre le python actuellement utilisé sous Linux: 1) which python
commande. 2) command -v python
commande 3) type python
commande
De même, sous Windows avec Cygwin, le résultat sera également le même.
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 vous êtes déjà dans le shell python. Essayez n'importe lequel d'entre eux. Remarque: Il s'agit d'une autre méthode. Pas la meilleure façon pythonique.
>>>
>>> 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'
>>>
>>>
python
partir du shell. Si vous commencez avec un chemin différent explicite (par exemple /opt/python/2.5/bin/python
), ou utilisez python3
puis exécutez ces commandes python, toutes ont produit des réponses incorrectes et cela n'a rien à voir avec le fait de ne pas être la manière la plus pythonique, c'est tout simplement faux.
/usr/bin/env python
exécuté en tant queenv -i ./script
. Dans ce cas, il renvoie le répertoire de travail actuel.