如何在Ubuntu上构建PyQt5

时间:2014-08-28 02:36:21

标签: python c++ linux ubuntu pyqt

我试图将我的作品从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 -shared -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退出状态

     

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

当我使用默认的$python3 configure.py时,错误不会引发,并且在构建PySide时看起来非常类似于错误(它由this修复)。但是我在编译方面很弱,所以我无法像对待pyside一样修复pyqt。

我在pip install PyQt5尝试了virtualenv,遗憾的是,我遇到了与this相同的失败。

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

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

  2. 当我导入它时,这是最烦人的问题:

      

    来自PyQt5导入QtCore,QtGui

    发生错误:

      

    追踪(最近一次通话):   文件"",第1行,in    来自PyQt5导入QtCore,QtGui   RuntimeError:sip模块实现API v11.0,但PyQt5.QtCore模块需要API v11.1

  3. 所有来源都是官方网站上发布的最新消息!这是个玩笑吗?


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

1 个答案:

答案 0 :(得分:4)

这真的很辛苦!

  

/ 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的lib中没有共享库。

然后我用--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 --enable-shared LDFLAGS = -Wl,-rpath /opt/python3.4.1/lib

然后安装PyQt5。

现在,我可以享受它〜(≧▽≦)/〜