繁体   English   中英

Ubuntu Python shebang线不起作用

[英]Ubuntu Python shebang line not working

无法让 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重新编译当前内核。

您还可以通过键入来检查以 gitbash/pycharm 终端结尾的行,

猫 .git 属性

这将列出设置,对于 linux 设置粘贴此 *.sh 文本 eol=lf

如果这不起作用,那么最好创建一个新分支并删除现有文件并创建新文件。

这对我有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM