无法通过 "#!/usr/bin/env python" 传递参数
我需要一个可以直接执行的Python脚本,所以我在文件开头加了 #!/usr/bin/env python
。但是,我还需要输出不经过缓冲,所以我试着用 #!/usr/bin/env python -u
,结果出现了 python -u: no such file or directory
的错误。
我发现 #/usr/bin/python -u
可以用,但我需要让 python
在 PATH
中,这样才能支持虚拟 env
环境。
我还有哪些选择呢?
9 个回答
38
这可能有点过时,但env(1)的手册上说可以用'-S'来处理这种情况。
#!/usr/bin/env -S python -u
在FreeBSD上似乎效果很好。
45
在某些环境中,env 不会把参数分开。所以你的 env 正在路径中寻找 python -u
。我们可以用 sh 来解决这个问题。把你的 shebang 替换成下面的代码,其他的就没问题了。
#!/bin/sh
''''exec python -u -- "$0" ${1+"$@"} # '''
# vi: syntax=python
补充一下,我们不需要担心 sh 的路径,对吧?
31
最好使用环境变量来启用这个功能。可以查看Python的文档了解更多信息:http://docs.python.org/2/using/cmdline.html
针对你的情况:
export PYTHONUNBUFFERED=1
script.py