问题
This question already has an answer here:
- Find full path of the Python interpreter? 3 answers
I want to run a Python script from a Python script with subprocess
, and I wish to do it using the same interpreter for each of them.
I'm using virtualenv, so I'd like to do something like:
subprocess.Popen('%s script.py' % python_bin)
How do I get python_bin
?
It should be /usr/bin/python
outside a virtualenv, and /path/to/env/bin/python
in a virtualenv.
回答1:
The name of the interpreter is stored in the variable sys.executable
回答2:
I found it by:
>>> 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'
回答3:
Just for making sure:
>>> import sys
>>> sys.executable
'/usr/bin/python'
>>>
来源:https://stackoverflow.com/questions/5927633/how-to-get-the-current-python-interpreter-path-from-inside-a-python-script