Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自动执行python文件而不从终端打开?_Python_Linux - Fatal编程技术网

自动执行python文件而不从终端打开?

自动执行python文件而不从终端打开?,python,linux,Python,Linux,抱歉,如果这是在错误的站点上(可能是超级用户),但我正在尝试使我的python.py文件可执行,以便我可以单击它并自动执行它的操作,而无需我指定它在默认提示下在终端中打开,并且我已经拥有“chmod+x”的权限 澄清: 我想通过点击来运行它,而不是通过终端(我的意思是当我说‘可以点击它,它会自动完成它的事情’) 已经有一条蛇帮路线了 当我现在单击它时,它会提示我是否要在文本文件terminal中打开它-我可以使它始终默认为在terminal中打开,还是这只是一个奇怪的请求 您是否已将其放在文件

抱歉,如果这是在错误的站点上(可能是超级用户),但我正在尝试使我的python.py文件可执行,以便我可以单击它并自动执行它的操作,而无需我指定它在默认提示下在终端中打开,并且我已经拥有“chmod+x”的权限

澄清:

  • 我想通过点击来运行它,而不是通过终端(我的意思是当我说‘可以点击它,它会自动完成它的事情’)
  • 已经有一条蛇帮路线了
  • 当我现在单击它时,它会提示我是否要在文本文件terminal中打开它-我可以使它始终默认为在terminal中打开,还是这只是一个奇怪的请求

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

#!/usr/bin/python
#!/usr/bin/env python

在python文件的第一行,添加以下内容:

#!/usr/bin/env python
因此,如果你有:

print "Hello World"
你应该有:

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

正如其他人所说,您需要在文件的开头放上,以说明使用哪个解释器来执行文件

如上链接所述,最方便的方法是使用
env
命令(而不是
python
的固定路径)-将其作为文件的第一行:

#!/usr/bin/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”行


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

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

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


当然,如果您想从命令行运行它,现在必须显式地用python启动它,因为它没有标记为可执行。shebang行不再重要了,但我还是会保留它,以防其他人将其标记为可执行,并期望它工作。

是更好的选择

我安装了anaconda,并且

#!/usr/bin/env python
但是,这对我不起作用:

#!/home/geoff/miniconda3/bin/python
确实有效。因此,请检查终端通常使用哪个python来执行.py文件

which python

在终端中,将其用作您的shebang。

Python首选的shebang行是#/usr/bin/env python如果python安装在/usr/bin以外的其他地方,而不是使用George V.Reilly的建议进行更新,则可以使用usr/bin/env python。我已经有了shebang行,我已经有了chmod+x'd文件,只是如果我单击该文件(显然与终端上的“/file.py”不同),它会提示我4个选项。。和“你想运行“foo”还是显示它的内容?”如果可能的话,我想让它在终端中自动运行。如果我的问题让人困惑,很抱歉。@meder:请用新的事实更新你的问题。不要对答案发表评论——更新你的问题。没有任何新的事实,在最初的描述中,它清楚地说明了“点击”,并且我已经对它进行了注释。shebang对于任何python脚本来说都是必不可少的。哦,如果它是一个基于文本的程序,“xterm-epython”会显示一个终端。替换您选择的终端仿真器。