为什么Python模块作为可执行文件运行与Python [filename]运行之间的行为不同



所以,我创建了一个简单的python模块test.py

import commands
def main():
  cmd = 'ls -l'
  (status, output) = commands.getstatusoutput(cmd)
  print status, output
if __name__ == '__main__':
  main()

当我使用"Python test.py"运行它时,我得到了我期望的结果。但是当我把它作为可执行文件运行时(是的,它有"x"权限),程序根本没有响应,我不得不按Ctrl+C退出它。为什么呢?两种方法不应该得到相同的结果吗?

在顶部添加一行:

#!/usr/bin/env python
import commands
...

告诉你的系统使用什么解释器来执行脚本。没有它,它不知道这是shell脚本,Perl脚本,Python脚本,什么

您需要将hashbang作为脚本的第一行,引用Python解释器的路径。否则,操作系统只知道你在尝试执行一个脚本,它不知道如何去做。

最新更新