无法让shebang在Ubuntu中运行python脚本。我每次只得到一个命令未找到错误。
test.py
#!/usr/bin/env python
print ('!')
冉
:which python
/usr/bin/python
在shebang玩蟒蛇的不同位置,但没有运气,包括哪个python提供的。有关如何解决此问题的任何提示?
由于
答案 0 :(得分:12)
如果您尝试以
运行命令$ test.py
错误可能与shebang无关。相反,test.py所在的目录不在您的PATH
中。尝试
$ ./test.py
绕过PATH
查询。
(这是为了确保脚本本身是可执行的。)
答案 1 :(得分:6)
在python docs page上它说:
要在Unix上轻松使用Python脚本,您需要制作它们 例如,可执行与
$ chmod + x脚本并在顶部放置一个合适的Shebang线 剧本。一个好的选择通常是
#!/ usr / bin / env python 它在整个PATH中搜索Python解释器。然而, 某些Unices可能没有env命令,因此您可能需要进行硬编码 / usr / bin / python作为解释器路径。
我不知道这是否适用于您。
答案 2 :(得分: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。
答案 3 :(得分:1)
确保“第一行”是shebang。 不要在文件的开头给出任何换行符。 “开头没有新行字符”
答案 4 :(得分: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
重新编译当前内核。