我试图将我的作品从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.gz
和sip-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的成功构建(看起来像),运行时也会显示两个错误。
默认安装路径是" site-packages",而不是" dist-packages"在ubuntu上。 所以我必须自己改变我的PYTHONPATH。
当我导入它时,这是最烦人的问题:
来自PyQt5导入QtCore,QtGui
发生错误:
追踪(最近一次通话): 文件"",第1行,in 来自PyQt5导入QtCore,QtGui RuntimeError:sip模块实现API v11.0,但PyQt5.QtCore模块需要API v11.1
所有来源都是官方网站上发布的最新消息!这是个玩笑吗?
最后,我使用apt-get install python3-pyqt5
将pyqt安装到我的默认python3.4.0。它现在运行良好,我仍然无法找到为python3.4.1构建PyQt的方法。
答案 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。
现在,我可以享受它〜(≧▽≦)/〜