52 votes

Comment obtenir le chemin de l'interpréteur Python actuel à partir d'un script Python ?

Je souhaite exécuter un script Python à partir d'un script Python avec subprocess , et je souhaite le faire en utilisant le même interpréteur pour chacun d'eux.

J'utilise virtualenv, donc j'aimerais faire quelque chose comme :

 subprocess.Popen('%s script.py' % python_bin)

Comment obtenir python_bin ?

Il doit être /usr/bin/python dehors d'un virtualenv et /path/to/env/bin/python dans un virtualenv.

72voto

Ignacio Vazquez-Abrams Points 312628

Le nom de l'interpréteur est stocké dans la variable sys.executable

8voto

nemo Points 680

Je l'ai trouvé par :

 >>> import sys           
>>> help(sys)
...

DATA
    __stderr__ = <open file '<stderr>', mode 'w' at 0x110029140>
    __stdin__ = <open file '<stdin>', mode 'r' at 0x110029030>
    __stdout__ = <open file '<stdout>', mode 'w' at 0x1100290b8>
    api_version = 1013
    argv = ['']
    builtin_module_names = ('__builtin__', '__main__', '_ast', '_codecs', ...
    byteorder = 'big'
    copyright = 'Copyright (c) 2001-2009 Python Software Foundati...ematis...
    dont_write_bytecode = False
    exc_value = TypeError('arg is a built-in module',)
    exec_prefix = '/usr/bin/../../opt/freeware'
    executable = '/usr/bin/python_64'

3voto

Gunslinger_ Points 2293

Juste pour être sûr :

 >>> import sys
>>> sys.executable
'/usr/bin/python'
>>>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X