如果我运行Python脚本,请使用foo.py
和
$ python3.6 foo.py
sys.argv
将返回['foo.py']
。但是我想要一些能够返回用于启动脚本的命令名称的工具。在这种情况下,'python3.6'
。
这可能吗?
答案 0 :(得分:3)
听起来您正在寻找sys.executable
:
一个字符串,给出有意义的系统上Python解释器的可执行二进制文件的绝对路径。如果Python无法检索其可执行文件的真实路径,则
sys.executable
将为空字符串或None
。
通常用于通过subprocess.run([sys.executable, 'spam.py', 'arg')
运行另一个Python脚本之类的事情。
这为您提供了通往Python解释器的绝对路径。如果只需要名称,请使用os.path.basename(sys.executable)
。
请记住,/usr/local/bin/python3.6
实际上总是有可能是名为/opt/local/python3.6/bin/python3
的东西的符号链接甚至是垫片启动器,在这种情况下,您可能会得到后面的路径,然后对其进行基础命名会给您python3
,但是运行python3
可能会运行不同的python3
,这在路径上会更高。使用绝对路径,您将不会遇到问题。