ホームページ  >  記事  >  バックエンド開発  >  LinuxでPythonを使用してターミナルを開いたときのエラーを解決する方法

LinuxでPythonを使用してターミナルを開いたときのエラーを解決する方法

王林
王林転載
2023-05-02 17:43:321309ブラウズ

Python を使用して Linux でターミナルを開くと、エラーが発生します

シナリオ 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 は問題なく動作しますが、ターミナル (端末) ではさまざまなモジュールが実行されます。問題

問題の説明

多くの場合、pycharm の使用に慣れていてすべてを完了していますが、多くのパスの問題を無視しています。場合によっては、他の環境やプラットフォームと対話する必要がある場合があります。たとえば、 , Python を呼び出す C# プログラムを作成すると、ターミナルにパラメータを渡して起動するのと同じになります。このとき、さまざまな No module 問題が表示されます。その理由は、外部環境が Python インターフェイスを呼び出すためです。プログラム内の各モジュールを検索しますが、これらのモジュールが環境変数に追加されていない場合は見つかりません。そのため、使用する各 py ファイルの先頭で次のステートメントを使用することをお勧めします

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../')
  • #この操作により、現在のファイルの上位ディレクトリ全体が環境変数に追加されるため、上位ディレクトリ以下のすべてのファイルを簡単に呼び出すことができます

  • 多くのディレクトリ レベルがあり、現在のディレクトリが深い場所にある場合は、このコマンドを少し変更して、使用するすべてのファイルとディレクトリを含めることができます (例: Yes

    #) #
    sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../../')
    もちろん、現在のフォルダーの下にあるすべてのディレクトリを呼び出したいだけの場合は、
  • sys.path.append(os.path.dirname(os.path.abspath(__file__)) + './')
    を使用できます。

以上がLinuxでPythonを使用してターミナルを開いたときのエラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。