2011-05-08 98 views
39

我想用subprocess從Python腳本運行Python腳本,我希望對每個腳本使用相同的解釋器。如何從Python腳本中獲取當前的Python解釋器路徑?

我使用的virtualenv,所以我想這樣做:

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

如何獲得python_bin

它應該是在virtualenv之外的/usr/bin/python,以及在virtualenv中的/path/to/env/bin/python

回答

57

解釋的名稱被存儲在變量sys.executable

+9

這是不可靠的嵌入式翻譯,使用'os .__ file__'(禮貌http://stackoverflow.com/a/8187027/14420) – 2013-03-26 20:25:12

+1

它實際上是'os .__ file__'上的一個目錄 – denfromufa 2016-03-14 02:50:15

2

只是爲了確保:

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

我發現它是:

>>> 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' 
相關問題