【问题标题】:Why is terminal blank after running python executable?为什么运行 python 可执行文件后终端空白?
【发布时间】:2014-10-21 19:30:26
【问题描述】:

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

这是否与 python 解释器可能不在指定路径中有关?

【问题讨论】:

  • 我看不到爆炸。你想要的shebang#!/usr/bin/python
  • 抱歉,我编辑了帖子以包含感叹号。脚本有感叹号,但点击脚本执行后终端仍然完全空白。

标签: python ubuntu terminal executable


【解决方案1】:

这似乎不是一个有效的shebang

试试#!/usr/bin/python

(注意井号后面的感叹号。)

根据 OP 的 cmets 进行编辑:

因此,根据您的 cmets 关于单击文件管理器中的图标和平台是 LXDE,看起来在该用例中它最终会从 @ 调用 g_app_info_create_from_commandline 函数987654321@ 库,看起来是一整层,用于存储“应用程序信息和启动上下文”。

在此之前,它最终会在 G_APP_INFO_CREATE_NEEDS_TERMINAL 标志中对 flags 字段进行按位或运算,然后将其传递给 fm-file-launcher.c code 中的 fm_app_info_create_from_commandline

所以,看起来双击文件在最终在终端中运行之前做了很多额外的事情,而且看起来那些额外的东西(额外的上下文,通过其他库和层抽象出来,等等.) 是导致问题的原因。

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

我不确定开发人员是否一定会同意——这将取决于幕后究竟发生了什么,以及他们希望该功能究竟是什么。如果您真的希望能够做到这一点(我不确定我是否真的比直接在终端窗口中使用 ./file.py 方法获得好处),我建议您针对 fm-file 提交一个错误-launcher.c 代码。这是 libfm 项目的一部分,根据他们的forum,他们似乎没有通过他们的 github 页面跟踪问题,而是通过他们的 SourceForge 页面跟踪问题。

简而言之,双击文件管理器中的图标并选择在终端中启动它与在终端中实际启动它是非常非常不同的事情,即使前者的功能本质上类似于后者。

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

【讨论】:

  • 感谢肯的快速响应。我道歉。我忘记在帖子中输入感叹号,但实际上我确实在哈希后面加上了感叹号,但没有成功。
  • 当然,没问题。嗯...单击模块运行它是什么意思?你不是从终端窗口像./file.py 一样运行它吗?如果没有,如果你这样做会发生什么?
  • 是的,如果我使用 ./file.py 从终端窗口运行它,它工作正常,但是当我想通过单击文件图标将它作为可执行文件运行时,终端会弹出但它将为空白。
  • 嗯...你的意思是在 Nautilus 中双击 file.py 的图标(如果是 Ubuntu;或者你在 OS X 上)?
  • 正确。在 ubuntu (LXDE) 中双击 file.py 的图标后,它会说“这个文本文件 'factorial.py' 似乎是一个可执行脚本。你想用它做什么?”然后我点击“在终端中执行”之后会弹出一个终端但为空白。
【解决方案2】:

可能与实际上并未设置为打印任何内容的脚本有关。请记住,如果直接在解释器中运行,所有语句都会得到打印输出,例如,

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

会在 intrepeter 中显示,但如果作为脚本运行,则需要 print 语句(P3k 中的函数)才能显示输出。

【讨论】:

  • 谢谢。是的,脚本中有一个打印语句,它首先提示用户输入。
【解决方案3】:

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

#!/usr/bin/python

print "test"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多