Qt5を使って(PyQt経由で)実行しているアプリケーションがあります。私はミニコンダを使用しています。そして、Pythonコードは、cythonisedされています。コードは自分のローカルマシンでセットアップされていました。元の.py
ファイルから生成されたcythonコードと、コードが正常に実行されるようにミニコンダにインストールされた関連ライブラリとモジュールがあります。それから、私はすべてのものを別のマシンに送り、.so
ファイルを与えて実行するようにcythonコードをコンパイルします。この時点で、私はエラーを取得する:Qtプラットフォームプラグイン "xcb" in ""を見つけたり読み込めなかったため、このアプリケーションを起動できませんでした。
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".
Reinstalling the application may fix this problem.
Aborted (core dumped)
私は可能な解決策のために長い時間のために周りを見回していると私は、次の追加情報があります。
私は様々な.so
ファイル上でlddをチェックしています。すべてが必要なライブラリを見つけるようです。私はlocate libqxcb.so
を試してみました、これは返す
:TranslucentCloudからの提案hereに基づき ~/miniconda3/pkgs/qt-5.6.2-3/plugins/platforms/libqxcb.so
& ~/miniconda3/plugins/platforms/libqxcb.so
、私はディレクトリ~/miniconda3/bin/platforms
(新しく作成された)にこれをコピーしてきました。
また、私のコードを呼び出すスクリプトにexport QT_DEBUG_PLUGINS=1
が含まれています。これにより、次の出力が得られます。
QFactoryLoader::QFactoryLoader() checking directory path "~/miniconda3/bin/platforms" ...
QFactoryLoader::QFactoryLoader() looking at "~/miniconda3/bin/platforms/libqxcb.so"
Found metadata in lib ~/miniconda3/bin/platforms/libqxcb.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"xcb"
]
},
"className": "QXcbIntegrationPlugin",
"debug": false,
"version": 329218
}
Got keys from plugin meta data ("xcb")
loaded library "~/miniconda3/bin/platforms/libqxcb.so"
xkbcommon: ERROR: failed to add default include path ~/Programmes/miniconda3/lib
Qt: Failed to create XKB context!
Use QT_XKB_CONFIG_ROOT environmental variable to provide an additional search path, add ':' as separator to provide several search paths and/or make sure that XKB configuration data directory contains recent enough contents, to update please see http://cgit.freedesktop.org/xkeyboard-config/ .
QFactoryLoader::QFactoryLoader() checking directory path "~/miniconda3/bin/xcbglintegrations" ...
QFactoryLoader::QFactoryLoader() checking directory path "~/miniconda3/bin/platformthemes" ...
QFactoryLoader::QFactoryLoader() checking directory path "~/miniconda3/bin/platforminputcontexts" ...
QFactoryLoader::QFactoryLoader() checking directory path "~/miniconda3/bin/styles" ...
Fontconfig error: Cannot load default config file
QFactoryLoader::QFactoryLoader() checking directory path "~/miniconda3/bin/accessible" ...
QFactoryLoader::QFactoryLoader() checking directory path "~/miniconda3/bin/accessiblebridge" ...
QXcbConnection: XCB error: 145 (Unknown), sequence: 165, resource id: 0, major code: 139 (Unknown), minor code: 20
QFactoryLoader::QFactoryLoader() checking directory path "~/miniconda3/bin/imageformats" ...
QLibraryPrivate::unload succeeded on "~/miniconda3/bin/platforms/libqxcb.so"
GUIがロードされ、ボタンなどが動作するようになりました。しかし、まだいくつかの問題があります。マイナーな問題は、すべてのフォントがローカルマシンとは異なることです(大きな問題ではありませんが、関連するライブラリをまだ見つけられていないと思われます)。
さらに重大なことに、GUIはどのキー押下にも応答しません。GUIには入力するテキストボックスがたくさんあるため、使用できなくなります。
上記の出力にはまだ明らかなエラーがいくつかありますが、どのライブラリなどでもまだそれが見つからない(またはこれが原因です)のはっきりしません。これは~/miniconda3/bin
に~/miniconda3/plugins/platforms
をコピーすることによって解決することができる
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".
Reinstalling the application may fix this problem.
Aborted (core dumped)
:
Qt C++を使用して同じ問題が発生しました。あなたの中にはQtのインストール(あなたのマシンにdeveloppがある)には "plugins"というフォルダがあります。このフォルダはアプリケーションと同じ場所にコピーする必要があり、問題を解決するはずです。 – basslo