web-dev-qa-db-ja.com

Pythonスクリプト内から現在のPythonインタプリタパスを取得する方法は?

PythonスクリプトからPythonスクリプトをsubprocessで実行し、それぞれに同じインタープリタを使用して実行したいそれら。

私はvirtualenvを使用しているので、次のようなことをしたいと思います。

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

python_binの入手方法を教えてください。

Virtualenv外では/usr/bin/python、virtualenvでは/path/to/env/bin/pythonにする必要があります。

50
e-satis

インタープリターの名前は変数 sys.executable に格納されます

私はそれを見つけました:

>>> 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'
8
nemo

念のため:

>>> import sys
>>> sys.executable
'/usr/bin/python'
>>>
2
Yuda Prawira