首頁  >  文章  >  後端開發  >  linux下使用python開啟terminal時報錯如何解決

linux下使用python開啟terminal時報錯如何解決

王林
王林轉載
2023-05-02 17:43:321317瀏覽

linux下使用python開啟terminal時報錯

場景一:在jenkins上執行自動化任務,測試任務執行時使用jenkins使用者(有sudo權限),測試腳本在linux執行(後台),執行到以下程式碼時報錯:

os.system(f"/usr/bin/konsole -e {cmd_orin2_10s}")

場景二:測試腳本在本地執行沒有問題,本地執行時使用root用戶,可正常開啟命令視窗

錯誤日誌

17:44:03  qt.qpa.xcb: could not connect to display 
17:44:03  qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
17:44:03  This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
17:44:03  
17:44:03  Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, xcb.

解決方法

從場景1和場景2可比較出,應該是由環境變量引起。從環境變數已經顯示視窗這兩方面去找問題,可找到 export DISPLAY=":0.0"

補充:pycharm 運作沒問題但是terminal(終端)運作卻各種module問題

問題描述

很多時候你用pycharm 用習慣了,啥都弄好了,但是卻忽略了很多路徑上的問題,偶爾需要和其他環境、平台互動的時候,例如寫了一個C# 程式去呼叫python 的藉口,就相當於terminal 傳參數啟動,這個時候就會顯示各種各樣的No module 問題解決辦法究其原因,是因為外部環境在調用python 介面的時候,要去你的程式中找各個module,但是如果這些module 還沒有加入到環境變數中,那麼就會找不到,因此推薦用下面的語句放在每個用到的py 檔案的最前頭

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../')
  • 這樣的操作可以將目前檔案的上一層目錄整個新增到環境變數中,如此便可以輕鬆地呼叫上一層目錄下面的所有檔案啦

  • #如果你的目錄層級很多,目前的目錄在較深的位置,那麼你可以將這個指令稍微改一下,總之將你要使用的所有檔案和目錄包含進去即可,例如可以

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../../')
  • 當然如果你只想呼叫目前資料夾下的所有目錄,那麼就可以使用

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + './')

以上是linux下使用python開啟terminal時報錯如何解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除