我正在尝试使用动态链接为Linux(Debian)部署Qt5应用程序。我的应用程序在Ubuntu上运行良好,所有依赖项运行良好。我的应用程序包如下所示:
- application.exe
- qt.conf
- libicudata.so.54
- libicui18n.so.54
- libicuuc.so.54
- libQt5Core.so.5
- libQt5DBus.so.5
- libQt5XcbQpa.so.5
- libQt5Gui.so.5
- libQt5Widgets.so.5
- platforms / libqxcb.so
当我从Debian上的终端运行它时,我收到以下错误消息:
此应用程序无法启动,因为找不到 或加载Qt平台插件“xcb”。
可用的平台插件有:xcb。
重新安装应用程序可能会解决此问题。 中止
然后我在libqxcb.so上运行了ldd,看到它在主文件夹中找不到qt库。我的application.exe可以在pro文件中找到rpath所有的qt库,所以它只是找不到qt库的平台插件。
如何为平台插件设置Qt库的路径?
答案 0 :(得分:0)
我通过使用http://doc.qt.io/qt-5/linux-deployment.html启动脚本启动应用程序解决了这个问题。但如果有人不知道如何解决它而不使用脚本,我想听听如何解决。在qt doc上,与上面相同的链接,它说应该可以用rpath完成它。
答案 1 :(得分:0)
当我尝试部署QT应用程序时也遇到此错误。尝试在Qt安装中找到plugins/platforms
文件夹。对我来说是..Qt5.7.0/5.7/gcc_64/plugins/platforms
。
将platforms
文件夹复制到存储.so的文件夹对我来说很有效。哦!并且不要忘记添加LD_LIBRARY_PATH=/folder_With_.so_and_Platform
答案 2 :(得分:0)
我在 Ubuntu 和 Debian 上运行依赖 PyQt5
为其 GUI 的 Python 应用程序时遇到了同样的问题:
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in ""
even though it was found. This application failed to start because
no Qt platform plugin could be initialized. Reinstalling the
application may fix this problem.
我很容易在 Ubuntu 上修复了它。 Debian 上的修复要困难得多。以下是我的解决方案。
<块引用>免责声明
我不是一个有经验的 Linux 用户。如果“解决方案”或多或少用胶带缝合在一起,请原谅我。
在 Ubuntu 上,我用这个解决方案快速修复了它:
$ sudo apt-get install --reinstall libxcb-xinerama0
在 Debian 上,我花了很长时间才找到修复程序。我首先尝试了我在此页面上找到的几件事: https://askubuntu.com/questions/308128/failed-to-load-platform-plugin-xcb-while-launching-qt5-app-on-linux-without
喜欢:
$ sudo apt-get --reinstall install libxcb-util1
$ sudo apt-get --reinstall install libqt5x11extras5
$ sudo apt-get --reinstall install libqt5dbus5
$ sudo apt-get --reinstall install libqt5widgets5
$ sudo apt-get --reinstall install libqt5network5
$ sudo apt-get --reinstall install libqt5gui5
$ sudo apt-get --reinstall install libqt5core5a
$ sudo apt-get --reinstall install libdouble-conversion1
$ sudo apt-get --reinstall install libxcb-xinerama0
$ sudo apt-get --reinstall install '^libxcb.*-dev'
$ sudo apt-get --reinstall install '^libxcb-util.*-dev'
没有任何帮助。我想知道:这可能与我在 Debian 机器上部署 Python3.9
venv 的事实有关吗?在 Ubuntu 上,我使用的是本机 Python3.8
,所以我猜所有安装和重新安装都运行良好。但是有了虚拟环境,可能就不那么简单了?
我的理论:我相信虚拟环境有自己的 Qt5 库存储在某个地方,所有安装和重新安装都发生在“原生”Qt5 库上——与虚拟环境中的 Qt5 库不同。
em>无论如何,我终于试过了:
$ ldd ~/Python-3.9.2/py3.9.2-env/lib/python3.9/site-packages/PyQt5/Qt/plugins/platforms/libqxcb.so | grep "not found"
libxcb-util.so.1 => not found
libxcb-util.so.1 => not found
此命令找出给定 .so
文件缺少的依赖项。然后我从这个网页下载了 libxcb-util.so.1
和 libxcb-util.so.1.0.0
:
我在这个论坛上找到的:
http://forums.debian.net/viewtopic.php?f=6&t=135672
我将 libxcb-util.so.1
和 libxcb-util.so.1.0.0
添加到 ~/Python-3.9.2/py3.9.2-env/lib/python3.9/site-packages/PyQt5/Qt/plugins/platforms/
文件夹,然后将此文件夹添加到我的 $LD_LIBRARY_PATH
环境变量:
$ export LD_LIBRARY_PATH=/home/johan/Python-3.9.2/py3.9.2-env/lib/python3.9/site-packages/PyQt5/Qt/plugins/platforms:$LD_LIBRARY_PATH
终于,python 应用程序运行起来了!
答案 3 :(得分:0)
在 debian 上:
pip install pyqt5==5.15.2
暂时有效