Ubuntu Python shebang行无效

9 投票
6 回答
20250 浏览
提问于 2025-04-17 15:32

在Ubuntu上运行Python脚本时,无法让shebang行正常工作。每次都会出现“找不到命令”的错误。

test.py

#!/usr/bin/env python

print ('!')

运行了

:which python
/usr/bin/python

尝试了在shebang中使用不同的Python路径,但都没有成功,包括用“which python”命令找到的路径。有没有什么建议可以帮助我解决这个问题?

谢谢

6 个回答

6

除了用点号执行脚本或者让脚本可以执行之外,可能还有其他问题:

如果你用Windows的编辑器写的脚本,里面可能会有Windows格式的换行符。去掉这些换行符可以让shebang(脚本开头的指令)重新正常工作。

要去掉这些换行符,可以参考一下这个链接:如何将Windows的换行符转换为Unix的换行符(CR/LF转LF)

另外,我在我的其他回答中也有关于shebang失败的评估的一些一般性说明。

9

在Python的文档页面上提到:

要在Unix系统上方便地使用Python脚本,你需要让它们可以执行,比如用下面的命令:

$ chmod +x script 这条命令会给你的脚本加上执行权限。然后,你还需要在脚本的最上面加上一行特别的标记,这个标记叫做Shebang。一个常用的选择是:

#!/usr/bin/env python 这个标记会在你的系统中查找Python解释器的位置。不过,有些Unix系统可能没有env这个命令,所以你可能需要直接写死解释器的路径,比如/usr/bin/python。

我不知道这是否适合你。

19

如果你尝试运行这个命令:

$ test.py

那么这个错误可能和开头的那行(shebang)没关系。问题可能是因为你的 test.py 文件所在的文件夹不在你的 PATH 里。你可以试试:

$ ./test.py

来绕过 PATH 的查找。

(另外,确保这个脚本本身是可以执行的。)

撰写回答