繁体   English   中英

为什么运行python可执行文件后终端空白?

[英]Why is terminal blank after running python executable?

我在python脚本( #!/usr/bin/python )的开头添加了hashbang行,并通过chmod +x file.py命令chmod +x file.py赋予了可执行特权,但是在单击模块以运行它后,终端弹出但是空白的。

它可能与不在指定路径中的python解释器有关吗?

看来这不是有效的射手

尝试#!/usr/bin/python

(请注意在井号后的惊叹号。)

根据OP的评论进行编辑:

因此,根据您对单击文件管理器中的图标以及平台为LXDE的评论 ,在该用例中,它似乎最终从GAppInfo库调用g_app_info_create_from_commandline函数,该函数似乎是存储“应用程序信息和启动上下文”。

在此之前,它最终在G_APP_INFO_CREATE_NEEDS_TERMINAL标志中按位或运算,进入flags字段,并传递给fm-file-launcher.c代码中的fm_app_info_create_from_commandline

因此,双击该文件似乎会做大量的额外工作,然后才最终在终端中运行它,看来,这些额外的工作(附加上下文,通过其他库和层抽象出来的等)正在是什么引起了问题。

如果该功能确实应该“正常”地在终端中真正启动,那么我将其视为fm-file-launcher.c代码或GAppInfo代码本身中的错误。

我不确定开发人员是否一定会同意-这将取决于引擎盖下到底发生了什么,以及他们希望该功能到底是什么。 如果您确实希望能够做到这一点(不确定在终端窗口中直接使用./file.py方法是否真的能带来好处),我建议您针对fm-file- launcher.c代码。 这是libfm项目的一部分,根据他们的论坛 ,他们似乎并没有通过github页面来跟踪问题,而是通过SourceForge页面来跟踪问题。

简而言之,双击文件管理器中的图标,然后选择在终端中启动它与在终端中实际启动它是非常非常不同的事情,即使前者在本质上要像后者那样工作。

附带说明一下,我尝试在Nautilus (我使用Ubuntu )中进行此操作,在该用例中,其行为是仅自动假定它是文本文件而不是可执行文件,并将其加载到我的默认文本编辑器中。

可能与脚本没有真正设置为打印任何内容有关。 请记住,虽然所有语句如果直接在解释器中运行都会获得打印输出,例如,

>>> a = 2
>>> a ** a
4

会在说明器中显示,但是如果以脚本运行,则需要print语句(P3k中的函数)才能显示输出。

您必须要有一些东西才能将项目输出到终端,例如您的file.py:

#!/usr/bin/python

print "test"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM