如何使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上的说明(查看页面的末尾)。没有什么工作

+1

什么是你的脚本实际上做?你用hello.py试过这个吗?我通常使用#!/ usr/bin/python和chmod 755 hello.py。 –

+1

bash $ chmod ** a + x ** script.py。 '要说***谁可以执行脚本。 –

+2

只是供参考:你的光标变成十字的原因是你的脚本被解释为shell脚本,因为你弄乱了shebang(请参阅@ TokenMacGuy的答案)。这意味着您的“导入”语句正在运行命令“import”,它需要截图。你现在可能有一个名为'sys','os'或类似的东西的PNG文件... –

这里是事情的清单尝试,在可能的粗糙顺序:

  • 确保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