2009-09-13 151 views
2

对不起,如果这是在错误的网站(可能是超级用户),但我想让我的python.py文件可执行,所以我可以点击它,它会自动做它的事情,没有我指定它在终端打开该默认提示符,并且我已拥有'chmod + x'作为其权限。自动执行的python文件没有从终端打开?

澄清:

  • 我想通过点击它,而不是通过终端(我是说,当我说“可以点击它,它会自动执行它的事”)
  • 运行它
  • 已经有一个shebang线
  • 当我现在点击它,它会提示我你想打开它在一个文本文件,终端 - 我可以使它始终默认打开在终端或这只是一个古怪的球请求?

回答

3

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

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

现在这里是重要的部分:你一直在问你想要如何处理文件的小对话框是因为它被标记为可执行文件。使用chmod -x移除可执行位。现在,当你双击它时,它将被简单地用相关的程序打开。

当然,如果你想从命令行运行它,你现在必须明确地启动它,因为它没有标记为可执行文件。 shebang系列已经不再重要了,但是我会放弃它,以防其他人将其标记为可执行文件,并期望它可以正常工作。

+0

哦,如果它是一个基于文本的程序,“xterm -e python”会引出一个终端。替换您选择的终端仿真器。 – kwatford 2009-09-14 02:37:09

0

你有这个放置在文件的开头:

#!/usr/bin/python 

4

在你的Python文件的第一行,补充一点:

#!/usr/bin/env python 

所以,如果您有:

print "Hello World" 

你应该再有:

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

为Python的首选家当线 #!的/ usr /斌/包膜蟒蛇 这将工作,如果Python是安装的地方以外与乔治五世赖利的建议 – 2009-09-13 19:05:10

+0

我已经有一个家当线,我已经有了文件chmod + x'd,除了如果我点击文件(显然不是终端上的“./file.py”),它会提示我4个选项..“你想要运行“foo”,还是显示它的内容?“ 我希望这可以在终端自动运行,如果可能的话。对不起,如果我的问题很混乱。 – 2009-09-13 19:08:23

+0

更新的/ usr/bin中 – 2009-09-13 20:21:55

0

正如其他有说,你需要把"shebang"放在文件的开头,说哪个解释器用来执行文件。

如在上述链路提到的,最简单的方法是使用env命令(而不是固定的路径至python) - 把这个作为文件中的第一行:

#!/usr/bin/env python 

壳将在$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 

,如果我添加“认领”行...

$ 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