如何使Python脚本自执行
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的记事本上。