Ubuntu Python shebang行无效

问题描述 投票:3回答:5

无法让shebang在Ubuntu中运行python脚本。我每次只得到一个命令未找到错误。

test.朋友

#!/usr/bin/env python

print ('!')

ran

:which python
/usr/bin/python

在shebang玩蟒蛇的不同位置,但没有运气,包括哪个python提供的。有关如何排除故障的任何提示?

谢谢

python linux ubuntu python-2.7 ubuntu-12.04
5个回答
12
投票

如果您尝试运行该命令

$ test.py

这个错误可能与shebang没有任何关系。相反,test.py所在的目录不在您的PATH中。尝试

$ ./test.py

绕过PATH查找。

(这是为了确保脚本本身是可执行的。)


6
投票

在python docs page上它说:

要在Unix上轻松使用Python脚本,您需要使它们可执行,例如同

$ chmod + x脚本并在脚本顶部放置一个合适的Shebang行。通常是个不错的选择

#!/ usr / bin / env python在整个PATH中搜索Python解释器。但是,某些Unices可能没有env命令,因此您可能需要将/ usr / bin / python硬编码为解释器路径。

我不知道这是否适用于你。


3
投票

除了使用前面的点执行脚本或使其可执行之外,可能还有另一个问题:

如果您尝试使用用Windows编辑器编写的脚本,它可能包含Windows行结尾。删除这些可以使shebang再次工作。

要删除此类行结尾,请参阅How to convert Windows end of line in Unix end of line (CR/LF to LF)

另见我对失败的shebang评估at my other answer的一般评论。


1
投票

确保“第一行”是shebang。不要在文件的开头给出任何换行符。 “开头没有换行符”


0
投票

这可能是由于内核配置错误造成的。 Take a look at your kernel's config选项,并检查是否设置了CONFIG_BINFMT_SCRIPT

zcat /proc/config.gz | grep CONFIG_BINFMT_SCRIPT

如果此命令的输出是CONFIG_BINFMT_SCRIPT=y之外的任何内容,这意味着您的内核将不允许您使用shebangs。您需要获取新内核或使用CONFIG_BINFMT_SCRIPT=y重新编译当前内核。

© www.soinside.com 2019 - 2024. All rights reserved.