自动运行的python文件没有从terminal打开?

对不起,如果这是在错误的网站(也许超级用户),但我想使我的python.py文件可执行文件,所以我可以点击它,它自动执行它的事情,没有我指定它在terminal打开默认提示,我已经有了“chmod + x”作为它的权限。

澄清:

  • 我想通过点击来运行它,而不是通过terminal(我的意思是当我说'可以点击它,它会自动完成它的事情')
  • 已经有一个shebang线
  • 当我点击它时,它会提示我是否要在文本文件,terminal中打开它 – 我可以使它始终默认打开terminal,或者这只是一个古怪的请求?

首先,为你想要的文件选择一个文件扩展名。 pyw可能是一个不错的选择。

为文件命名,并在文件浏览器中将该文件类型与python相关联。 在GNOME中,您可以打开其属性窗口,转到打开方式选项卡,然后输入python作为自定义命令。

现在,这里是重要的一部分:你一直在问你的文件是什么,因为它被标记为可执行文件。 使用chmod -x删除可执行位。 现在,当你双击它时,只需要打开相关的程序。

当然,如果你想从命令行运行它,你现在必须明确的启动它,因为它没有被标记为可执行文件。 shebang线已经不再重要了,但是如果别人把它标记为可执行文件并且期望它可以正常工作的话,我会放弃它。

在你的python文件的第一行,添加这个:

#!/usr/bin/env python 

所以如果你有:

 print "Hello World" 

你应该有:

 #!/usr/bin/env python print "Hello World" 

你把这个放在文件的开头:

 #!/usr/bin/python 

正如其他人所说的那样,你需要在文件的开始处放置“shebang” ,以便说出使用哪个解释器来执行文件。

正如在上面的链接中提到的,最便携的方法是使用env命令(而不是一个固定的python路径) – 把它作为文件中的第一行:

 #!/usr/bin/env python 

shell将在$PATH查找你的python ,而不是寻找/usr/local/bin/python然后失败。 这意味着如果Python安装在非标准的位置,它将会工作。

例如:

 $ cat example.py print "Test" $ file example.py # it is treated as an ASCII file example.py: ASCII text $ chmod +x example.py $ ./example.py # when executed, it defaults to being executed as a shell script ./example.py: line 1: print: command not found 

现在,如果我添加“shebang”行…

 $ cat example.py #!/usr/bin/env python print "Test" $ file example.py # it is recognised as a Python script example.py: a python script text executable $ ./example.py # and executes correctly Test