代码之家  ›  专栏  ›  技术社区  ›  kjl

区分脚本是“直接”运行还是使用Python可执行文件运行

  •  1
  • kjl  · 技术社区  · 12 年前

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

    ./program.py
    

    而不是

    python ./program.py
    

    中的“/程序” sys.argv[0] 无法区分示例案例。

    2 回复  |  直到 12 年前
        1
  •  1
  •   millimoose Tomasz Nurkiewicz    12 年前

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

    #!/usr/bin/env noscript=True python
    import os
    if os.getenv('noscript'):
        print("called as executable")
    else: 
        print("called as script")
    
        2
  •  0
  •   Bryan Oakley    12 年前

    真的没有区别。如果你设置了可执行位,操作系统最终会做你在命令行上做的事情——它确实做了 python script.py 。唯一的区别是操作系统看到的第一行以 #! 以精确地确定要运行的python版本。