如何使Python脚本自执行
问题描述:
可能重复:
Calling a python script from command line without typing “python” first如何使Python脚本自执行
我已经试过
bash$ chmod +x script.py
不起作用。我还记得把
#!usr/bin/env python
在脚本的开始。
bash$ ./script.py
不做任何事情,它只是改变了我的光标在十字架上笑
更新:我已经固定
#!/usr/bin/python
我也试过
chmod a+x script.py
依然没有。我的脚本具有导入命令并使用sys.argv ...我已按照此link上的说明(查看页面的末尾)。没有什么工作
答
这里是事情的清单尝试,在可能的粗糙顺序:
- 确保shebang行有正确的语法(您已经完成了这项工作,
#!/usr/bin/python
)。 - 确保家当是文件中的第一线(甚至不是一个空行或它上面的注释)。
- 验证
/usr/bin/python
实际存在和作品。你的Python解释器可能安装在其他地方。在提示符下键入/usr/bin/python
并确保Python启动。如果您不知道它的安装位置,请输入which python
。 - 如果
.
不在您的PATH
(可能不是),那么您必须运行./script.py
的脚本,因为shell默认情况下不会在当前目录中查找命令。 - 确保可执行位上设置你的脚本(
+x
,与ls -l
验证)。 - 确保您在编辑器中仅使用了仅LF行结束符。贝壳可能会挑剔,而你的shebang线必须仅以LF结束而不是CRLF。如果您使用的是Windows文本编辑器,这可能只是一个问题,但可能值得您检查。
- 请确保您的文本编辑器没有默默地在文件的开头插入UTF-8 BOM。再说一次,如果你在Windows上使用记事本,这个可能性就很大。
+1
最后2点救了我的命。 – BPm
答
了“认领”需要包含完整的可执行文件路径。你打电话env
,这是很好的,但是你有没有给它的完整路径:启动脚本,像这样:
#!/usr/bin/env python
#^
+0
打我吧。诅咒你,TokenMacGuy ...碰撞。 – krs1
什么是你的脚本实际上做?你用hello.py试过这个吗?我通常使用#!/ usr/bin/python和chmod 755 hello.py。 –
bash $ chmod ** a + x ** script.py。 '要说***谁可以执行脚本。 –
只是供参考:你的光标变成十字的原因是你的脚本被解释为shell脚本,因为你弄乱了shebang(请参阅@ TokenMacGuy的答案)。这意味着您的“导入”语句正在运行命令“import”,它需要截图。你现在可能有一个名为'sys','os'或类似的东西的PNG文件... –