Ubuntu Python shebang行无法正常工作

Dre*_*ewK 5 python linux ubuntu python-2.7 ubuntu-12.04

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

test.py

#!/usr/bin/env python

print ('!')
Run Code Online (Sandbox Code Playgroud)

:which python
/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

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

谢谢

che*_*ner 13

如果您尝试运行该命令

$ test.py
Run Code Online (Sandbox Code Playgroud)

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

$ ./test.py
Run Code Online (Sandbox Code Playgroud)

绕过PATH查询.

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

  • 我从来没有见过这样的说法,但我认为建议反对'.' 在你的'PATH`中会扩展到任何相对路径.我们的想法是查找应该符合一组固定的目录,这些目录不依赖于您当前的工作目录. (2认同)

ajo*_*jon 6

在python docs页面上它说:

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

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

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

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


Dom*_*Cat 6

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

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

要删除此类行尾,请参阅例如如何在 Unix 行尾(CR/LF 到 LF)中转换 Windows 行尾

另请参阅我在其他答案中对失败的 shebang 评估的一般性评论。