此应用程序无法启动,因为它无法在“”中找到或加载Qt平台插件“xcb”

2024-04-27 10:23:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个使用Qt5(通过PyQt)运行的应用程序。我正在使用miniconda,python代码已经过cythonis处理。代码是在我的本地计算机上设置的,cython代码是从原始的.py文件以及miniconda中安装的相关库和模块生成的,因此代码可以成功运行。然后,我将所有内容发送到另一台计算机,编译cython代码以提供.so文件并尝试运行它。在这一点上,我得到了错误:

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,结果是: ~/miniconda3/pkgs/qt-5.6.2-3/plugins/platforms/libqxcb.so &安培; ~/miniconda3/plugins/platforms/libqxcb.so

基于TranslucentCloud的建议here,我已经将其复制到目录~/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有很多文本框要填充,所以这使得它不可用。

显然,上面的输出仍然有一些错误,但是,不清楚从这个库中,它仍然找不到(或者为什么是这样)。


Tags: 文件topath代码binso计算机qt
1条回答
网友
1楼 · 发布于 2024-04-27 10:23:37

要解决上述错误,需要执行一些步骤:

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)

这可以通过将~/miniconda3/plugins/platforms复制到~/miniconda3/bin来解决。

除了启动Qt GUI的bash脚本外,我还添加了以下几行,否则GUI中的所有文本都将显示在Courier中:

export FONTCONFIG_FILE=/etc/fonts/fonts.conf
export FONTCONFIG_PATH=/etc/fonts/

最后,我还需要以下行来允许GUI注册按键:

export QT_XKB_CONFIG_ROOT=/usr/share/X11/xkb

解决这个问题的关键是行: export QT_DEBUG_PLUGINS=1这使我能够看到Qt在哪里断开。

相关问题 更多 >