是否有可能在python shebang中包含命令行选项?

我在我的python脚本的顶部有规范的shebang。

#!/usr/bin/env python 

但是,当我运行我的脚本时,我仍然经常想要将无缓冲的输出导出到日志文件中,所以我最终调用了:

 $ python -u myscript.py &> myscript.out & 

我可以embedded-u选项在shebang中像这样…

 #!/usr/bin/env python -u 

只打电话:

 $ ./myscript.py &> myscript.out & 

…仍然没有得到缓解? 我怀疑这是行不通的,想在尝试之前检查一下。 有什么可以做到这一点?

Solutions Collecting From Web of "是否有可能在python shebang中包含命令行选项?"

你可以在shebang行上有参数,但是大多数操作系统对参数的数量有一个很小的限制。 POSIX只要求支持一个参数,这是常见的,包括Linux。

由于您使用的是/usr/bin/env命令,因此您已经在python使用了这个参数,所以您不能再添加一个参数-u 。 如果你想使用python -u ,你需要硬编码到python的绝对路径,而不是使用/usr/bin/env ,例如

 #!/usr/bin/python -u 

看到这个相关的问题: 如何使用shebang(即#!)多个参数?

一个可移植的方法是创建另一个体现你的选择的可执行文件。

例如,把这个文件放在你的路径上,并命名为upython ,并使其可执行:

 #!/usr/bin/env bash python -u -and -other -options "$@" 

…使用你需要的任何选项。 那么你的myscript.py脚本可以是这样的:

 #!/usr/bin/env upython (... your normal Python code ...) 

Torxed建议通过shell别名来做这件事。 如果在任何版本的unix中工作,我会非常惊讶。 它在我刚刚测试的几个发行版中不起作用。 我的方法将工作在任何Unix。