Python 程序如何确定它是否在 Unix 系统上作为可执行文件执行而不是作为脚本调用?
./program.py
代替
python ./program.py
'/program' insys.argv[0]
无法区分示例情况。
Python 程序如何确定它是否在 Unix 系统上作为可执行文件执行而不是作为脚本调用?
./program.py
代替
python ./program.py
'/program' insys.argv[0]
无法区分示例情况。
一个有点 hackish 的解决方案是在 shebang 行中添加一个环境变量来表明这一点program.py
:
#!/usr/bin/env noscript=True python
import os
if os.getenv('noscript'):
print("called as executable")
else:
print("called as script")
真的没有区别。如果您设置了可执行位,操作系统最终会完全按照您在命令行上所做的操作——它确实是python script.py
. 唯一的区别是操作系统查看第一行#!
以精确确定要运行的 python 版本。