如何使Python脚本自执行

13 投票
2 回答
35988 浏览
提问于 2025-04-17 03:09
bash$ ./script.py  

可能重复的问题:
在命令行中调用Python脚本时不输入“python”

我试过了

bash$ chmod +x script.py  

但是不行。我还记得在脚本的开头加上

#!usr/bin/env python  

但是没效果,只是把我的光标变成了十字形,哈哈。

更新:我修复了

#!/usr/bin/python    

我也试过

chmod a+x script.py   

还是不行。我的脚本里有导入命令,还用到了sys.argv……我按照这个链接上的说明(看页面底部)去做的。结果还是没用。

2 个回答

11

“shebang”需要包含可执行文件的完整路径。你在调用env,这很好,但你没有提供完整路径:你可以这样开始你的脚本:

#!/usr/bin/env python  
# ^
18

下面是一些可以尝试的步骤,按照可能性的大致顺序排列:

  • 确保你的开头那一行(shebang)语法正确(你已经做过了,应该是 #!/usr/bin/python)。
  • 确保这行是文件的 第一行(上面不能有空行或注释)。
  • 确认 /usr/bin/python 这个路径真的存在并且可以使用。你的Python解释器可能安装在别的地方。可以在命令行输入 /usr/bin/python,看看Python能否启动。如果你不知道Python安装在哪里,可以输入 which python
  • 如果 . 不在你的 PATH 中(可能没有),你需要用 ./script.py 来运行你的脚本,因为默认情况下,命令行不会在当前目录查找命令。
  • 确保你的脚本有可执行权限(+x,可以用 ls -l 来检查)。
  • 确保你在编辑器中只使用LF作为换行符。命令行对这个很敏感,你的shebang行必须只以LF结束,而不是CRLF。如果你在Windows的文本编辑器上工作,这可能会成为问题,但检查一下也是值得的。
  • 确保你的文本编辑器不会在文件开头默默插入UTF-8 BOM。这个问题通常出现在Windows的记事本上。

撰写回答