无法让 shebang 行在 Ubuntu 中为 python 脚本工作。我每次只得到一个命令未找到错误。
测试.py
#!/usr/bin/env python
print ('!')
冉
:which python
/usr/bin/python
在shebang中玩了python的不同位置,但没有运气,包括哪个python提供的东西。有关如何解决此问题的任何提示?
谢谢
无法让 shebang 行在 Ubuntu 中为 python 脚本工作。我每次只得到一个命令未找到错误。
测试.py
#!/usr/bin/env python
print ('!')
冉
:which python
/usr/bin/python
在shebang中玩了python的不同位置,但没有运气,包括哪个python提供的东西。有关如何解决此问题的任何提示?
谢谢
如果您尝试将命令运行为
$ test.py
该错误可能与shebang没有任何关系。相反,test.py 所在的目录不在您的PATH
. 尝试
$ ./test.py
绕过PATH
查找。
(这是为了确保脚本本身是可执行的。)
在 python文档页面上它说:
要在 Unix 上轻松使用 Python 脚本,您需要使它们可执行,例如
$ chmod +x 脚本并在脚本顶部放置适当的 Shebang 行。一个好的选择通常是
#!/usr/bin/env python 在整个 PATH 中搜索 Python 解释器。但是,某些 Unices 可能没有 env 命令,因此您可能需要硬编码 /usr/bin/python 作为解释器路径。
我不知道这是否适用于你。
除了使用前面的点执行脚本或使其可执行之外,可能还有另一个问题:
如果您尝试使用用 windows 编辑器编写的脚本,它可能包含 windows 行尾。删除这些可以使 shebang 再次工作。
要删除此类行尾,请参阅How to convert Windows end of line in Unix end of line (CR/LF to LF)例如。
另请参阅我在其他答案中对失败的 shebang 评估的一般评论。
确保“第一行”是shebang。不要在文件的开头给出任何换行符。“开头没有换行符”
这可能是由于内核配置错误。查看内核的配置选项,并检查是否CONFIG_BINFMT_SCRIPT
已设置:
zcat /proc/config.gz | grep CONFIG_BINFMT_SCRIPT
如果这个命令的输出是除了 之外 CONFIG_BINFMT_SCRIPT=y
的任何东西,这意味着你的内核将不允许你使用 shebangs。您将需要获得一个新内核或使用CONFIG_BINFMT_SCRIPT=y
.