从其图标中生成可执行的Python程序
我希望python程序在单击图标的窗口中执行。
这是教我自己和编码类型和Ubuntu的第一天,所以过分解释和额外的细节是值得赞赏的。
我正在使用的代码示例
print("Game Over") input("\n\nPress the enter key to exit")
在IDLE中运行正常但是当我单击.py文件图标时,它会打开编辑器而不是程序/窗口
到目前为止我所做的步骤
- 右键单击.py文件并将权限设置为“允许将文件作为程序执行”
- 尽可能多地阅读,它似乎指向了我头顶的信息。
例子
#!/usr/local/bin/python #!/usr/bin/env python CHMOD X
我不了解或知道在哪里使用。
我使用的是Ubuntu 14.04和Python 3
先感谢您。
虽然你的问题可能出于多方面的原因(过于宽泛,偏离主题,每个问题不止一个主题,在一些几乎重复的边缘),我会回答问题。
第一个问题:关于运行一个(仅文本)脚本“从一个图标”,你提到它:
-
您的脚本是纯文本的,需要在
Idle
或终端窗口中运行。 这意味着如果要通过双击图标来运行它,则需要创建一个.desktop
文件,其中定义为在终端窗口内运行脚本。
这些.desktop
文件是顺便说一下安装在Ubuntu上的几乎所有GUI应用程序的一部分。一个非常基本的示例,适合您的脚本:
[Desktop Entry] Name=Test Exec=/home/jacob/Bureaublad/test.py Terminal=true Type=Application
最有趣的是:
Exec=/home/jacob/Bureaublad/test.py
其中定义了运行脚本的命令。
阅读更多关于如何创建命令,脚本是否可执行,使用shebang,语言扩展,请参阅此处 。和行:
Terminal=true
这表示脚本需要在终端窗口中运行。
您可以使用图标和更多选项扩展
.desktop
文件,具体取决于您使用它的内容,请参阅此处 。 -
如何使用
.desktop
文件- 将上面的代码粘贴到空文件中,将其另存为
test.desktop
。 编辑Exec=/home/jacob/Bureaublad/test.py
行中的命令,根据我添加的链接创建运行脚本的命令。 -
如果您使用桌面上的文件,请使用以下命令使其可执行:
chmod +x /path/to/Test.desktop
或者,您可以将
.desktop
文件复制(移动)到~/.local/share/applications
以使其在Dash中可用。 全局安装的应用程序将其.desktop
文件存储在/usr/share/applications
。 在最后两个目录中,不需要使.desktop
文件可执行。 - 将上面的代码粘贴到空文件中,将其另存为
关于您不理解的示例行
-
线条:
#!/usr/local/bin/python #!/usr/bin/env python
是shebangs ; 脚本的第一行,告诉shell如果脚本是可执行的,如何运行它,并在脚本路径之前运行它而不使用
python
。 由于你使用python3
,脚本中的shebang通常应该是:#!/usr/bin/env python3
更多关于这一点,以及上面链接中的shebang和命令之间的关系。
-
CHMOD X(?)
chmod +x
可能是你的意思。 如上所述,您可以使用以下命令使文件可执行:chmod +x /path/to/file
正如其他人所提到的,chmod + x是使程序可执行所必需的。 例如,对于程序hello.py,您可以在终端中输入:
$ chmod + x hello.py
现在,不知道在以前的版本中它是否属实,但在Ubuntu 16.04 LTS中,必须将图标的行为设置为允许单击图标来执行程序。 您可以通过以下方式执行此操作:
转到文件浏览器窗口,然后将鼠标光标移动到屏幕顶部并选择编辑>首选项>行为,然后选择“打开时运行可执行文本文件”或“每次询问”。
另外,为了防止终端在程序结束时关闭(例如,如果你想保持程序输出到屏幕上的终端),在python3.5中你需要把这一行放在程序的最后:
输入()
希望这可以帮助。