如何使Python脚本自我执行

13

可能是重复问题:
在不用输入"python"的情况下从命令行调用Python脚本

我已经尝试过了

bash$ chmod +x script.py  
不起作用。我也记得放了

#!usr/bin/env python  
在脚本的开头。
bash$ ./script.py  

这只是改变了我的光标形状,没做任何实质性的操作。

更新:我已经修复了。

#!/usr/bin/python    

我也尝试过

chmod a+x script.py   

还是没有任何结果。我的脚本具有导入命令并使用sys.argv...我遵循了这个链接上的指示(请看页面底部)。 仍然无效。


1
你的脚本实际上是做什么的?你用hello.py试过吗?我通常使用#!/usr/bin/python和chmod 755 hello.py。 - Paul Nathan
1
bash$ chmod a+x script.py . 必须得说是 能够执行这个脚本。 - Pete Wilson
2
仅供参考:你的光标变成十字形的原因是你的脚本被解释为shell脚本,因为你弄错了shebang(请参见@TokenMacGuy的答案)。这意味着你的“import”语句正在运行命令import,它会截屏。现在你可能有一个名为sysos或类似的PNG文件 lying around... - Laurence Gonsalves
你说得对。有一个导入命令。我该怎么修复它?我已经修复了“shebang”,但问题仍然存在。 - BPm
@Pete:不,你不需要。没有“who”,chmod的符号形式几乎像使用了a一样,尽管它会被你的umask过滤。 - Laurence Gonsalves
显示剩余6条评论
2个回答

18

以下是尝试的事情列表,按照可能性的大致顺序:

  • 确保shebang行有正确的语法(您已经做到了,#!/usr/bin/python)。
  • 确保shebang是文件中的第一行(甚至没有空行或注释在它之前)。
  • 验证/usr/bin/python是否实际存在并可用。您的Python解释器可能安装在其他位置。在提示符下键入/usr/bin/python并确保Python启动。如果您不知道它安装在哪里,请键入which python
  • 如果不在您的PATH中(可能没有),则必须使用./script.py运行脚本,因为默认情况下shell不会在当前目录中查找命令。
  • 确保您的脚本上设置了可执行位(+x,用ls -l进行验证)。
  • 确保您的文本编辑器仅使用LF换行符。Shell可能很挑剔,您的shebang行必须以LF结尾而不是CRLF。只有当您使用Windows文本编辑器时,这可能是一个问题,但检查一下可能是值得的。
  • 确保您的文本编辑器没有在文件开头默默插入UTF-8 BOM。同样,只有在Windows上使用记事本时才有可能出现这种情况。

11

"shebang"需要包含可执行文件的完整路径。你正在调用env,这很好,但是你没有给它完整路径:请这样开始你的脚本:

#!/usr/bin/env python  
# ^

抢了我的风头。诅咒你,TokenMacGuy...顶一下。 - krs1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接