[Ubuntu] QT プログラムが「エラー解決策」で Qt プラットフォーム プラグイン「xcb」を見つけられなかった、またはロードできませんでした

問題の説明:

下記参照:
ここに画像の説明を挿入

import matplotlib.pyplot as plt
import cv2
img=cv2.imread('img_path')###读入单张图片

b,g,r=cv2.split(img) #原图的bgr三个通道分离
img_rgb=cv2.merge([r,g,b])#rgb顺序显示的合成

plt.figure()
plt.subplot(331),plt.imshow(img),plt.title("cat_bgr")

plt.subplot(337),plt.imshow(img_rgb),plt.title("cat_rgb")
 
plt.show()

上記のコードを実行します。ブロガーは主にmatplotlib関数描画を呼び出し、インターネット上で * 「Qt プラットフォーム プラグイン "xcb"* を見つけられなかったため、またはロードできなかったため、このアプリケーションを開始できませんでした*」と検索し、次の解決策を取得します。

方法 1:

原因分析:
matplotlib のバージョンに互換性がありません

解決策:
最初に元の matplotlib をアンインストールしてから、再インストールします。

参考:

pip uninstall matplotlib
pip install matplotlib

方法 2:

原因分析:

matplotlib関数描画を呼び出したいのですが、 「 」で Qt プラットフォーム プラグイン「xcb」が見つからないかロードできなかったというエラー メッセージが表示されるため、
Qt と matplotlib のバージョンに互換性がないことを考慮してください。

解決策:
QT と matplotlib をアンインストールし、再インストールします

参考:

conda uninstall qt
conda uninstall matplotlib
conda install qt
conda install matplotlib

方法 3:

原因分析:
platforms フォルダーに対応するファイルがありません。自分で手動で切り替えてみて、Qt インストール ディレクトリで plugins ファイルの下のサブファイルである platforms ファイルを見つけて、.dll ファイルを配置します。自分のフォルダーに保存して実行します。

ブロガーはこの解決策を試しませんでした。これには、基礎となる依存ファイルの移動が含まれ、一部のファイルが欠落しているため問題が発生しやすく、当時の conda 環境が混乱していたため、Qt インストール ディレクトリが見つからなかったためです。ため、この解決策は放棄されました。使用しようとすることはお勧めしません。

方法 4 (おそらく最も一般的なケース):

前提条件:
コマンド ライン入力によりqtcreatorエラーが生成されます。

This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Reinstalling the application may fix this problem.
Aborted (core dumped)

正常に起動できる場合はqtcreatorそうではなく、正常に起動する場合は下図のようになります
ここに画像の説明を挿入

sudo gedit ~/.bashrc

最後の行に次を追加します。

export QT_DEBUG_PLUGINS=1

このステップの機能は、qt 起動プロセス中にエラー メッセージを確認できることです。
2. 次のように、qtcreator を実行し、コマンド ラインで実行中のプロセスを取得します。

Got keys from plugin meta data ("vnc")
QFactoryLoader::QFactoryLoader() looking at "/opt/Qt5.10.0/Tools/QtCreator/lib/Qt/plugins/platforms/libqxcb.so"
Found metadata in lib /opt/Qt5.10.0/Tools/QtCreator/lib/Qt/plugins/platforms/libqxcb.so, metadata=
{
    
    
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
    
    
        "Keys": [
            "xcb"
        ]
    },
    "className": "QXcbIntegrationPlugin",
    "debug": false,
    "version": 330240
}


Got keys from plugin meta data ("xcb")
QFactoryLoader::QFactoryLoader() checking directory path "/opt/Qt5.10.0/Tools/QtCreator/bin/platforms" ...
Cannot load library /opt/Qt5.10.0/Tools/QtCreator/lib/Qt/plugins/platforms/libqxcb.so: (/usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5: version `Qt_5_PRIVATE_API' not found (required by /opt/Qt5.10.0/Tools/QtCreator/lib/Qt/plugins/platforms/libqxcb.so))
QLibraryPrivate::loadPlugin failed on "/opt/Qt5.10.0/Tools/QtCreator/lib/Qt/plugins/platforms/libqxcb.so" : "Cannot load library /opt/Qt5.10.0/Tools/QtCreator/lib/Qt/plugins/platforms/libqxcb.so: (/usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5: version `Qt_5_PRIVATE_API' not found (required by /opt/Qt5.10.0/Tools/QtCreator/lib/Qt/plugins/platforms/libqxcb.so))"
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Reinstalling the application may fix this problem.
Aborted (core dumped)

3. 理由は libqxcb.so です。次のように /opt/Qt5.10.0/5.10.0/gcc_64/plugins/platforms に移動し、コマンド ldd libqxcb.so を実行して関連コンテンツを表示します。

./libqxcb.so: /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5: version `Qt_5_PRIVATE_API' not found (required by ./libqxcb.so)
./libqxcb.so: /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5: version `Qt_5_PRIVATE_API' not found (required by ./libqxcb.so)
./libqxcb.so: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.10' not found (required by ./libqxcb.so)
./libqxcb.so: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5' not found (required by ./libqxcb.so)

問題は次のとおりであることがわかります。‘Qt_5_PRIVATE_API’ not found
4. 次のように環境変数を追加する必要があります。

export LD_LIBRARY_PATH=/opt/Qt5.10.0/5.10.0/gcc_64/lib:$LD_LIBRARY_PATH

5. コマンドライン入力qtcreator、正常な操作

方法 5:

アイデア 1:
環境変数を設定します。export QT_DEBUG_PLUGINS=1

実行して QT プログラムのロードプロセスを確認し、詳細なエラー情報を確認します。
最後の部分は次のようになります。

Found metadata in lib /usr/lib64/qt5/plugins/platforms/libqxcb.so, metadata=
{
    
    
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
    
    
        "Keys": [
            "xcb"
        ]
    },
    "className": "QXcbIntegrationPlugin",
    "debug": false,
    "version": 329218
}
QLibraryPrivate::loadPlugin failed on "/usr/lib64/qt5/plugins/platforms/libqxcb.so" : "Cannot load library /usr/lib64/qt5/plugins/platforms/libqxcb.so: (/lib64/libQt5XcbQpa.so.5: symbol _ZNK11QFontEngine6handleEv, version Qt_5_PRIVATE_API not defined in file libQt5Gui.so.5 with link time reference)"
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, xcb, xcb.

Reinstalling the application may fix this problem.

libQt5XcbQpa.so、libQt5DBus.so.5 を実行ディレクトリにコピーします。

アイデア 2:
qt の下の plugins ディレクトリの下にある platform ディレクトリを、実行可能プログラムと同じレベルにある実行可能ディレクトリにコピーします (同じレベルである必要があります)。

この方法は方法 3 と同じです

方法 6:

解決qt.qpa.plugin: Qt プラットフォーム プラグイン「xcb」が「」で見つかりませんでした

方法 7 (これも私の最終的な解決策):

アイデア:
conda 環境を再作成します。

conda create -n env_name python=3.7

インストールmatplotlibパッケージ:

pip install matplotlib

無事解決しました!

参考リンク:
1. [解決済み] qt.qpa.plugin: Qt プラットフォーム プラグイン「xcb」が「」で見つかりませんでした

おすすめ

転載: blog.csdn.net/weixin_48936263/article/details/124655575