获取用于运行当前 Python 脚本的 Python 命令

Wmb*_*uch 2 python

如果我运行一个Python脚本,foo.py

$ python3.6 foo.py
Run Code Online (Sandbox Code Playgroud)

sys.argv会回来['foo.py']。但我想要一些可以返回用于启动脚本的命令名称的东西。在这种情况下'python3.6'

这可能吗?

aba*_*ert 7

听起来您正在寻找sys.executable

在有意义的系统上,给出 Python 解释器的可执行二进制文件的绝对路径的字符串。如果 Python 无法检索其可执行文件的真实路径,则为sys.executable空字符串或None.

这通常用于通过subprocess.run([sys.executable, 'spam.py', 'arg').

这为您提供了 Python 解释器的绝对路径。如果您只想要名称,请使用os.path.basename(sys.executable).

请记住,总是有可能,例如,/usr/local/bin/python3.6实际上只是一个符号链接,甚至是一个名为 shim 的启动器,例如/opt/local/python3.6/bin/python3,在这种情况下,您可能会得到后一种路径,然后对其进行基础命名,python3然后运行python3可能会python3在路径上运行一个更高的不同。使用绝对路径,你不会有这个问题。