シナリオ 1: jenkins で自動化されたタスクを実行し、テスト タスクを実行するときに jenkins ユーザー (sudo 権限を持つ) を使用します。 、テスト スクリプトは Linux にあります。実行時 (バックグラウンド)、次のコードを実行するとエラーが発生します:
os.system(f"/usr/bin/konsole -e {cmd_orin2_10s}")
シナリオ 2: テスト スクリプトの実行には問題ありません。ローカルで実行する場合、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 の使用に慣れていてすべてを完了していますが、多くのパスの問題を無視しています。場合によっては、他の環境やプラットフォームと対話する必要がある場合があります。たとえば、 , Python を呼び出す C# プログラムを作成すると、ターミナルにパラメータを渡して起動するのと同じになります。このとき、さまざまな No module 問題が表示されます。その理由は、外部環境が Python インターフェイスを呼び出すためです。プログラム内の各モジュールを検索しますが、これらのモジュールが環境変数に追加されていない場合は見つかりません。そのため、使用する各 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を使用してターミナルを開いたときのエラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。