不能用“#!”将参数传递给python!/usr/bin/env python“

2024-04-19 19:24:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个直接可执行的python脚本,所以我用#!/usr/bin/env python启动了这个文件。但是,我也需要无缓冲的输出,所以我尝试了#!/usr/bin/env python -u,但是在python -u: no such file or directory中失败了。

我发现#/usr/bin/python -u可以工作,但我需要它来获得PATH中的python来支持虚拟env环境。

我有什么选择?


Tags: or文件pathnoenv脚本bin环境
3条回答

在Linux上使用shebang时,解释器名称后面的整个行都被解释为一个参数。将python -u传递给env,就像键入了:/usr/bin/env 'python -u'/usr/bin/env搜索一个名为python -u的二进制文件,但没有。

最好使用环境变量来启用它。见python文档:http://docs.python.org/2/using/cmdline.html

对于您的情况:

export PYTHONUNBUFFERED=1
script.py

在某些环境中,env不分割参数。 所以您的env正在您的路径中寻找python -u。 我们可以用sh来解决问题。 用下面的代码行替换shebang,一切都会好起来的。

#!/bin/sh
''''exec python -u -- "$0" ${1+"$@"} # '''
# vi: syntax=python

我们不用担心去上海的路,对吧?

相关问题 更多 >