2011-05-08 13 views
39

मैं एक पायथन स्क्रिप्ट से subprocess के साथ एक पायथन स्क्रिप्ट चलाने के लिए चाहता हूं, और मैं इसे प्रत्येक के लिए एक ही दुभाषिया का उपयोग करके करना चाहता हूं।पाइथन लिपि के अंदर से वर्तमान पायथन दुभाषिया पथ कैसे प्राप्त करें?

मैं virtualenv का उपयोग कर रहा है, इसलिए मैं कुछ ऐसा करना चाहते हैं:

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

मैं python_bin कैसे मिलता है?

वर्चुअलएन्व के बाहर /usr/bin/python और वर्चुअलनव में /path/to/env/bin/python होना चाहिए।

उत्तर

57

दुभाषिया के नाम बस सुनिश्चित करने के लिए चर sys.executable

+9

इस एम्बेडेड दुभाषियों के लिए विश्वसनीय नहीं है , इसके लिए 'os .__ file__' का उपयोग करें (http://stackoverflow.com/a/8187027/14420 की सौजन्य) –

+1

यह वास्तव में' os .__ file__' से ऊपर एक निर्देशिका है – denfromufa

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' 
संबंधित मुद्दे