区分何时运行脚本和#x27;直接';,或者使用Python可执行文件
Python程序如何确定它是否在Unix系统上作为可执行文件执行,而不是作为脚本调用区分何时运行脚本和#x27;直接';,或者使用Python可执行文件,python,boolean,executable,execution,self,Python,Boolean,Executable,Execution,Self,Python程序如何确定它是否在Unix系统上作为可执行文件执行,而不是作为脚本调用 ./program.py 而不是 python ./program.py sys.argv[0]中的“/program”无法区分示例情况。一个有点粗俗的解决方案是在program.py中的shebang行中添加一个环境变量来指示这一点: #!/usr/bin/env noscript=True python import os if os.getenv('noscript'): print("cal
./program.py
而不是
python ./program.py
sys.argv[0]
中的“/program”无法区分示例情况。一个有点粗俗的解决方案是在program.py
中的shebang行中添加一个环境变量来指示这一点:
#!/usr/bin/env noscript=True python
import os
if os.getenv('noscript'):
print("called as executable")
else:
print("called as script")
一个有点粗俗的解决方案是在
program.py
中的shebang行中添加一个环境变量来表示这一点:
#!/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版本。实际上没有区别。如果您设置可执行位,操作系统最终将执行您在命令行上执行的操作——它执行python script.py
。唯一的区别是操作系统查看以#开头的第一行
来精确确定要运行的python版本。我认为这是不可能的。Unix不区分这两种情况,shell在遇到#时只会为您执行python program.py
/usr/bin/env python
shebang行。这些知识可以解决什么类型的问题?你到底想做什么?我不相信这是可能的。Unix不区分这两种情况,shell在遇到#时只会为您执行python program.py
/usr/bin/env python
shebang行。这些知识可以解决什么类型的问题?你到底想完成什么?