自动执行python文件没有从终端打开?

时间:2009-09-13 18:53:39

标签: python linux

很抱歉,如果这是在错误的网站(也许是超级用户),但我正在尝试使我的python.py文件可执行,所以我可以点击它并自动完成它的事情,我没有指定它在终端打开通过默认提示,我已经拥有'chmod + x'作为其权限。

澄清:

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

6 个答案:

答案 0 :(得分:4)

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

#!/usr/bin/env python

所以如果你有:

print "Hello World"

然后你应该:

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

答案 1 :(得分:3)

首先,为您想要拥有此行为的文件选择所需的文件扩展名。 pyw可能是一个不错的选择。

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

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

当然,如果你想从命令行运行它,你现在必须明确地用python启动它,因为它没有标记为可执行文件。 shebang系列不再重要,但无论如何我都会留下它,以防其他人将其标记为可执行并希望它能够正常工作。

答案 2 :(得分:1)

http://supervisord.org是更好的选择。

答案 3 :(得分:0)

您是否已将其放在文件的开头:

#!/usr/bin/python

答案 4 :(得分:0)

正如其他人所说,你需要将"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

答案 5 :(得分:0)

我已经安装了蟒蛇,并且

#!/usr/bin/env python

对我不起作用,但是:

#!/home/geoff/miniconda3/bin/python

工作了。因此,请检查您的终端通常使用哪个python与

一起执行.py文件
which python

在终端中并将其用作您的爆炸。