如何以编程方式获取python.exe位置?

Joa*_*nge 132 python

基本上我想得到一个python解释器的句柄,所以我可以传递一个脚本文件来执行(从外部应用程序).

mha*_*wke 223

这适用于Linux,也许在Windows中也适用?

Python 2.x

>>> import sys
>>> print sys.executable
/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

Python 3.x

>>> import sys
>>> print(sys.executable)
C:\path\to\python.exe
Run Code Online (Sandbox Code Playgroud)

  • "以编程方式"我认为意味着来自python解释器.至少,当我可以搜索这个答案时,这对我来说意味着什么:) (4认同)
  • 是的 - >>>导入sys | >>> print sys.executable | C:\ Python25\pythonw.exe (3认同)
  • 我认为在py2exe编译的应用程序中,它会指向应用程序的可执行文件,而不是python.exe.但有人必须确认. (3认同)
  • 适用于Mac OS X. (2认同)
  • 如下所述,这在环境中或安装了多个 python 版本时不起作用。显然这里你需要当前正在使用的 python 版本。 (2认同)

小智 45

如果在嵌入式python环境中工作,sys.executable是不可靠的.我的建议是从中推断出来

import os
os.__file__
Run Code Online (Sandbox Code Playgroud)

  • py_interpreter = os.path.join(os .__ file __.split("lib /")[0],"bin","python")) (5认同)
  • 有人可以解释为什么它在嵌入式 python 环境中不可靠吗?当他们说系统“有意义”时,[文档](https://docs.python.org/3/library/sys.html#sys.executable)是否意味着相反的情况? (4认同)
  • 也许更确切地说,`pathlib.Path(os.__file__).parents[2] / 'bin' / 'python'` (3认同)
  • 我能够分别利用“sys.base_prefix”和“sys.prefix”来进行基本 python 安装和虚拟环境。这很方便,因为我已经导入了“sys”。更多描述请参见[文档](https://docs.python.org/3/library/sys.html#sys.base_prefix)。 (2认同)

小智 7

我认为这取决于你如何安装python.请注意,我可以在我的机器上安装多个python.但是,如果您通过python 2.2或更高版本的msi进行安装,我相信它会创建一个注册表项,如下所示:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Python.exe
Run Code Online (Sandbox Code Playgroud)

它在我的机器上给出了这个值:

C:\Python25\Python.exe
Run Code Online (Sandbox Code Playgroud)

您只需阅读注册表项即可获取该位置.

但是,您可以通过xcopy安装python,就像您可以在任意位置使用的模型一样,您只需要知道它的安装位置.

  • 在注册表中查找并没有多大用处,因为您不知道您是否正在运行注册表中正在讨论的python. (8认同)