如何在Ubuntu上构建PyQt5

How to build PyQt5 on Ubuntu

本文关键字:构建 PyQt5 Ubuntu      更新时间:2023-10-16

我正试图将我的工作从PySide转移到PyQt5

我的项目使用Python3.4.1,但Ubuntu默认的python3是Python3.4.0,所以我必须自己编译PyQt5

Python3.4.1的路径是/opt/python3.4.1/bin/python3.4,它在中运行良好

我的系统是ubuntu14.04


首先,我从官方网站PyQt-gpl-5.3.1.tar.gzsip-4.16.2.tar.gz下载源代码。Sip已成功安装,但生成pyqt时出现错误。

我的命令是:

$/opt/python3.4.1/bin/python3.4 configure.py
$make

错误是

g++-m64-Wl,-O1-共享-o libpyqt5qmlplugin.so pluginloader.o moc_pluginloader.o-L/usr/X11R6/lib64-L/opt/python3.4.1/lib-lpython3.4m-lQt5Qml-L/usr/lib/x86_64-linux-gnu-lQt5Network-lQt5Gui-lQt5Core-lGL-lpthread

//usr/bin/ld:/opt/python3.4.1/lib/libpython3.4m.a(abstract.o):在创建共享对象时,不能使用针对"_Py_NotImplementedStruct"的重新定位R_X86_64_32S;使用-fPIC 重新编译

/opt/python3.4.1/lib/libpython3.4m.a:添加符号时出错:值错误

collect2:错误:ld返回1退出状态

make1:***[libpyqt5qmlplugin.so]错误1

当我使用默认的$python3 configure.py时不会出现错误,并且看起来与构建PySide时的错误非常相似(通过此修复)。但我在编译方面很弱,所以我不能像对pyside那样修复pyqt。

我在virtualenv中也尝试了pip install PyQt5,不幸的是,也遇到了同样的失败。

即使使用默认python成功构建(看起来像),运行时也会显示两个错误。

  1. 默认的安装路径是"site-packages",而不是ubuntu上的"dist-package"。所以我必须自己改变我的蟒蛇。

  2. 当我导入时,最烦人的问题是什么

    从PyQt5导入QtCore,QtGui

    出现错误:

    追踪(最近一次通话):文件",第1行,在从PyQt5导入QtCore,QtGui运行时错误:sip模块实现API v11.0,但PyQt5.QtCore模块需要API v11.1

所有的来源都是官方网站上最新发布的!这是个笑话吗?


最后,我使用apt-get install python3-pyqt5将pyqt安装到我的默认python3.4.0中。它现在运行得很好,但我仍然找不到为python2.4.1构建PyQt的方法。

这真是一项艰苦的工作!

//usr/bin/ld:/opt/python3.4.1/lib/libpython3.4m.a(abstract.o):在创建共享对象时,不能使用针对"_Py_NotImplementedStruct"的重新定位R_X86_64_32S;使用-fPIC 重新编译

由于链接器找不到libpythonX.X.so,因此引发此错误。当我构建Python3.4.1时,我只使用了一个选项--prefix,所以我的python库中没有共享库。

然后我用--enable-shared重建我的python,然后安装PyQt5,并成功导入PyQt。

然而,我意识到我的python版本是3.4.0!Python执行官。已链接到系统python的lib。。。

这篇文章对我帮助很大:http://koansys.com/tech/building-python-with-enable-shared-in-non-standard-location

最后,我添加了LDFLAGS= -Wl,-rpath /opt/python3.4.1/lib来配置选项:

/configure--prefix=/opt/python3.4.1--启用共享的LDFLAGS=-Wl,-rpath/opt/python3.4.1/lib

然后安装PyQt5。

现在,我可以享受了~(≥▽≦)/~