区分脚本何时“直接”运行,或与Python可执行文件一起运行

时间:2013-03-02 00:07:07

标签: python boolean executable execution self

Python程序如何确定它是否作为Unix系统上的可执行文件执行而不是作为脚本调用?

./program.py

而不是

python ./program.py

' /程序'在sys.argv[0]中无法区分示例案例。

2 个答案:

答案 0 :(得分:1)

一个有点hackish的解决方案是添加一个环境变量来指示program.py中的shebang行:

#!/usr/bin/env noscript=True python
import os
if os.getenv('noscript'):
    print("called as executable")
else: 
    print("called as script")

答案 1 :(得分:0)

确实没有区别。如果设置可执行位,则操作系统最终会完全按照您在命令行上执行的操作 - 它执行python script.py。唯一的区别是os查看以#!开头的第一行,以准确确定要运行的python版本。