为什么明明在 Py 文件第 1 行加了解释器,运行权限,却不能双击运行

上网、浏览、聊天、下载等
回复
zengwang
帖子: 1
注册时间: 2021-03-07 15:40
系统: 20.04

为什么明明在 Py 文件第 1 行加了解释器,运行权限,却不能双击运行

#1

帖子 zengwang » 2021-03-07 15:46

我明明在 Python 文件第 1 行加了解释器的位置,加了运行权限,为什么乌班图还是以文件编辑器的形式打开
图片
而且我用 pyinstaller,编译的文件双击运行也会这样
图片

但是./lanzou-gui 就可以正常运行
头像
astolia
论坛版主
帖子: 6542
注册时间: 2008-09-18 13:11

Re: 为什么明明在 Py 文件第 1 行加了解释器,运行权限,却不能双击运行

#2

帖子 astolia » 2021-03-08 13:04

图形界面下运行程序的机制可不是你想象得那样,光加个shebang和可执行权限就成。

首先看的是文件的mime type,这个文件的右键属性中或者命令行下用

代码: 全选

file --mime-type 文件路径
可以查看,一般而言只有是application/x-executable才能直接运行。不是的话会去查找关联的应用程序,你的情况明显是关联到了文本编辑器。

至于pyinstaller编译出来的东西为什么mime type是application/x-sharedlib,因为ubuntu上的gcc出于安全加固考虑,默认启用了PIE

推荐方案是创建启动器文件,也就是一个.desktop文件,最简化的版本如下

代码: 全选

[Desktop Entry]
Version=1.0
Type=Application
Name=名字
Exec=/path/to/your/lanzou-gui
然后右键允许启动

不太推荐方案是将关联程序换成python
回复