如何直接运行Python程序?


13

如何直接运行Python程序?

我在gedit中创建了一个.py文件(例如,mnik.py)。它在终端中运行平稳。

命令去

python3 mnik.py

但是,每当我单击该文件时,就会使用gedit打开该文件。我无法通过单击直接运行它。

该怎么办?



4
@kasperd python3在命令行上输入参数是运行python脚本的绝佳方法。实际上,这是运行需要终端程序和参数的程序的最简单方法(就像我自己的许多脚本一样mercurial,也包括,sphinx)。努力解释为什么我20年来一直做的事情不是正确的方法吗?
Anthon

3
@kasperd正确编写的Python脚本(或程序)不必带有shebang行。如果不是这样,那么从各个方面来看,它仍然是Python脚本。该脚本只是无法从Linux shell以您喜欢的简写形式执行。还有一些环境完全不需要Python脚本具有shebang行,并允许它们通过双击来启动脚本。
Anthon

1
@kasperd内核运行Python脚本所需的条件./scriptname并不能验证您声称使用来从命令行运行脚本python3。运行python脚本的方式不同,并且做事python3 ./mnik.py也是一种正确的方式,只是有所不同(而且至少您以这种方式获得python3,而不是python2,因为到目前为止大多数答案都是最可能的)
Anthon

1
使用<language> <script>是运行脚本的完全有效且可接受的方法。暗示这是不好的做法,应该对此表示反对。
Jacob Vlijm '16

Answers:


26

需要两件事。

  1. 脚本必须有#!行告诉OS使用哪个解释器。在您的情况下,代码的第一行必须是#!/usr/bin/env python3
  2. 您需要打开文件管理器,转到“编辑”->“首选项”->“行为”,然后选择如何处理可执行文件。

    在此处输入图片说明

    1. 最后,请确保您的文件本身实际上已设置了可执行权限。在终端中,您可以执行操作chmod +x /path/to/script.py;在GUI中,右键单击文件并更改其属性->权限

    在此处输入图片说明

    在此处输入图片说明

关于shebang线的注意事项

第一行被称为shebang行,必须以#!; 接下来出现的就是将读取您的代码的解释器的名称。如果您正在使用python3,则可以将#!/usr/bin/python3#!/usr/bin/env python3用于可移植性。如果您没有使用特定于python版本的代码-只需使用#!/usr/bin/env python

注意脚本输出:

如果您的脚本将输出打印到控制台,则它将需要具有终端窗口,或者使用GUI对话框(例如)zenityRun in Terminal如果您想查看代码,请首选使用option。如果您希望脚本执行某些操作而不会看到控制台输出,请使用Run-use选项。

在此处输入图片说明

另外,如果您具有命令行参数(例如sys.argv[1]在脚本中),则除非您打开了终端窗口,否则无法进行设置。


1
@PriyadarshiPaul这Files与启动器上的程序相同。在Windows中说这将是文件资源管理器或My Computer
Sergiy Kolodyazhnyy 2016年

@PriyadarshiPaul,它nautilus在航站楼
grooveplex


3
#!/usr/bin/env python将在大多数Ubuntu系统上调用Python2。尽管您可以使为Python3编写的Python脚本与Python2兼容,但我不认为OP已经这样做。#!/usr/bin/env python3似乎更合适的shebang
Anthon

1
为什么我们要在这里提出Arch Linux?也许我会有点意思,但是我们在这里谈论Ubuntu。在Ubuntu上,默认情况下python链接到python2.7。当然,我们可以满足每个单独的问题,但是要大声喊叫-如果您编码,那就做对吧。
Sergiy Kolodyazhnyy

3

您需要在第一行放置程序的位置以执行代码,然后需要通过更改其权限来将脚本设置为作为可执行文件运行。假设您正在从终端或其他脚本启动应用程序。

查找您的Python安装

$ which python
/usr/bin/python

将程序位置添加到程序的顶行,并#!在前面添加

#!/usr/bin/python

# Python code goes here....

将Python脚本设置为具有执行权限

$ chmod 700 test.py

现在您可以直接运行脚本

$ ./test.py

test.py的代码清单

#!/usr/bin/python

print "test"

2

如果要运行该程序而无需键入python3 mnik.py,则必须使脚本可执行,并确保python3使用该脚本来运行它。

首先您可以通过运行

 chmod +x mnik.py

第二个您可以通过将调用python3的shebang行添加为脚本的第一行来完成。在我使用过的所有python3随附的Ubuntu系统上,都可以通过在顶部添加以下行来获取python3:

#!/usr/bin/env python3

这两个变化后,您可以键入/path/to/mnik.py./mnik.py或者只是mnik.py(后者需要的脚本是在你的PATH)。

如果您进行了这些更改,则可能还需要考虑重命名mnik.pymnik,这是带有在PyPI上发布的命令的Python软件包的常见做法。


好的,这些方法现在都不起作用
Priyadarshi Paul

什么是“好”?“这些”指的是什么?
Anthon

这是说** usr / bin / env:错误的解释器:没有这样的文件或目录**
Priyadarshi Paul

那里/的前面至少有一个失踪者。请在您的评论中解释“它”是什么。是bash外壳吗?是Windows Command.com吗?您从什么调用程序,并使用什么命令行语法?
Anthon
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.