簡體   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