【问题标题】:how to make python script self-executable [duplicate]如何使python脚本自执行[重复]
【发布时间】:2011-09-26 23:56:50
【问题描述】:

可能重复:
Calling a python script from command line without typing “python” first

我试过了

bash$ chmod +x script.py  

不起作用。我也记得放

#!usr/bin/env python  

在脚本的开头。

bash$ ./script.py  

什么都不做,它只是把我的光标变成了一个十字,哈哈

更新:我已经修复了

#!/usr/bin/python    

我也试过了

chmod a+x script.py   

还是什么都没有。我的脚本有导入命令并使用 sys.argv...我已经按照link 上的说明进行操作(查看页面末尾)。没有任何效果

【问题讨论】:

  • 您的脚本实际上是做什么的?你用 hello.py 试过了吗?我通常使用 #!/usr/bin/python 和 chmod 755 hello.py。
  • bash$ chmod a+x script.py 。必须说可以执行脚本。
  • 仅供参考:您的光标变成十字的原因是您的脚本被解释为 shell 脚本,因为您搞砸了 shebang(请参阅@TokenMacGuy 的回答)。这意味着您的“导入”语句正在运行命令import,它会截取屏幕截图。您现在可能有一个名为 sysos 或类似名称的 PNG 文件...
  • 你是对的。有导入命令。我该如何解决?我已经修复了“shebang”,它仍然是一样的
  • @Pete:不,你没有。如果没有“谁”,chmod 的符号形式的行为几乎就像您使用了 a,尽管它已被您的 umask 过滤。

标签: python


【解决方案1】:

“shebang”需要包含可执行文件的完整路径。您正在调用env,这很好,但您还没有给出完整的路径:像这样开始您的脚本:

#!/usr/bin/env python  
# ^

【讨论】:

  • 打败我。诅咒你,TokenMacGuy……撞。
【解决方案2】:

以下是要尝试的事情列表,按可能性的粗略顺序排列:

  • 确保 shebang 行具有正确的语法(您已经这样做了,#!/usr/bin/python)。
  • 确保 shebang 是文件中的第一行(甚至不是空行或上面的注释)。
  • 验证/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 上使用记事本时才会出现这种情况。

【讨论】:

  • 最后两点救了我的命。
猜你喜欢
  • 1970-01-01
  • 2019-04-23
  • 2023-04-07
  • 2019-02-07
  • 2017-09-03
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 2015-10-23
相关资源
最近更新 更多