Ubuntu 14.04下搭建Python3.4 + PyQt5.3.2 + Eric6.0开发平台
引言
了很多Python GUI工具集,还是觉得PyQt比较理想,功能强大跨平台,还支持界面设计器。花一天时间折腾了Ubuntu14.04(32位)+ Python3.4 + Qt5.3.2 + PyQt5.3.2 + Eric6.0 的完整开发平台的搭建,各种出错差点放弃了,好在终于一一解决了,记录下来以后搭建起来方便点。   
安装Python3.4
Ubuntu14.04貌似默认安装了Python2.7 和Python3.4。故Python3.4的安装可略去。
安装Qt5
Ubuntu14.04自带Qt4的部分库文件,但是我们的平台要求Qt5,所以首先安装Qt5.
Qt5.3.2下载:/downloads
安装过程:
下载到的是Qt5的在线安装程序,为其赋予可执行权限即可单击启动。由于我之前文件都安装在/opt目录下,故这里以root身份安装:
[plain] view plaincopyprint?
1. sudo chmod a+x qt-opensource-linux-x86-1.6.0-5-online.run   
2. sudo ./qt-opensource-linux-x86-1.6.0-5-online.run 
启动界面后默认安装即可。
配置过程:
安装完成后配置一下PATH,在当前用户主目录下的.bashrc (or .zshrc)文件中加入:
[plain] view plaincopyprint?
1. export QTDIR=/opt/Qt/5.3/gcc/ 
2.  
3. export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${QTDIR}/lib 
4.  
5. export PATH=${QTDIR}/bin:${PATH} 
   注意${QTDIR}/bin和${PATH}的顺序!因为Ubuntu14.04默认${PATH}路径中的/usr/bin下存在诸多qt命令(确切的说是指向qtchooser的软连接,qtchooser最终会选择系统自带的Qt4命令:但是这些命令默认都不存在),如果${QTDIR}/bin在${PATH}之后,会导致Qt命令失效。
特别是qmake命令,在后续安装中需要用到,保险起见,在终端输入qmake,如果显示qmake命令不存在,请通过创建软连接进行解决:
将/usr/bin下的qmake软连接到/opt/Qt/5.3/gcc/bin/qmake上,或者将/usr/lib/i386-linux-gnu/qt4/bin/qmake软连接到/opt/Qt/5.3/gcc/bin/qmake上:
[plain] view plaincopyprint?
1. sudo ln -s /opt/Qt/5.3/gcc/bin/qmake /usr/bin/qmake 
2. or 
3. sudo ln -s /opt/Qt/5.3/gcc/bin/qmake /usr/lib/i386-linux-gnu/qt4/bin/qmake 
此时再输入qmake查看是否设置成功。
安装SIP
SIP是python调用C/C++库的必备模块。因此SIP是PyQt的依赖工具,安装PyQt之前必须先
安装对应版本的SIP。PyQt编译时使用的SIP版本必须与python默认调用的SIP保持一致!否则python中是无法调用PyQt的。这里我们使用最新的SIP 4.16.3.
Ubuntu14.04中貌似是自带4.15版的SIP(or 自己安装python扩展是自动安装的)。终端输入:
[plain] view plaincopyprint?
1. sip -V 
查看已安装SIP版本,如果存在其他版本,请查看python3的dist-packages目录下是否存在sip相关文件。如果存在将其删除:
[plain] view plaincopyprint?
1. sudo -rm /usr/lib/python3/dist-packages/sip* 
然后正式安装SIP 4.16.3。
SIP 4.16.3下载:www.riverbankcomputing/software/sip/download
安装过程:
[plain] view plaincopyprint?
1. tar -zxvf sip-4.16.   
2. cd sip-4.16.3 
3. python3 configure.py 
4. sudo make 
5. sudo make install 
配置过程:
SIP无需配置,只是需要安装完成后注意核对一下版本:
分别在终端输入:
[plain] view plaincopyprint?
1. sip -V 
在python3环境输入:
[plain] view plaincopyprint?
1. >>>import sip 
2. >>>print(sip.SIP_VERSION_STR) 
查看二者显示的版本是否一致。如不一致,需要重新执行上述删除过程和安装过程。版本不一致将意味着后面编译PyQt所使用的SIP和Python3调用的SIP的不一致,导致在Python3中调用PyQt的相关模块(from PyQt5 import QtCore)出现类似如下错误:
[plain] view plaincopyprint?
1. the sip module implements API v11.0 but the PyQt5.QtCore module requires API v11.1 
安装PyQt5
PyQt是Python的一个跨平台图形开发工具集,是Python与Qt的成功融合。PyQt包含了大约440个类、超过6000个的函数和方法,灰常强大。需要注意的是,Eric(一种Python IDE,依赖PyQt)当前最新的稳定版Eric5只支持PyQt4(确切的说是PyQt4.8以上5.0以下),支持PyQt5的Eric版本现在仅为Eric6.0 snapshot版,该版本包含最新的Eric5的所有功能,但稳定性需要测试。如果你希望使用稳定的Eric5,请在此步骤安装PyQt4的最新版PyQt4.11.2。这里我们安装PyQt5.3.2.
PyQt5.3.2下载:www.riverbankcomputing/software/pyqt/download5
安装过程:
[plain] view plaincopyprint?
1. ubuntu怎么安装pythontar -zxvf PyQt-gpl-5.3. 
2. cd PyQt-gpl-5.3.2 
3. python3 configure.py     
注意:此命令生成各种Qt模块后,其中的QtWebKitWidgets模块由于Qt4和Qt5的qprinter.h所属模块的调整(Qt4存在于QtGui中,Qt5将其调整到QtPrintSupport中了),QtWebKitWidgets的Makefile中缺失了对QtPrintSupport的头文件目录引用,会导致后面编译PyQt5时无法到qprinter.h头文件,编译失败(编译过程非常漫长):
[plain] view plaincopyprint?
1. qprinter.h: No such file or directory 
所以需要向刚生成的QtWebKitWidgets模块源文件的MakeFile文件的INCPATH中添加QtPrintSupport引用。
原INCPATH为:
[plain] view plaincopyprint?
1. INCPATH       = -I/opt/Qt/5.3/gcc/mkspecs/linux-g++ -I. -I. -I/usr/include/python3.4m -I/opt/Qt/5.3/gcc/include -I/opt/Qt/5.3/gcc/include/QtWebKitWidgets -I/opt/Qt/5.3/gcc/include/QtWebKit -I/opt/Qt/5.3/gcc/include/QtWidgets -I/opt/Qt/5.3/gcc/include/QtNetwork -I/opt/Qt/5.3/gcc/include/QtGui -I/opt/Qt/5.3/gcc/include/QtCore -I. 
修改为:
[plain] view plaincopyprint?
1. INCPATH       = -I/opt/Qt/5.3/gcc/mkspecs/linux-g++ -I. -I. -I/usr/include/python3.4m -I/opt/Qt/5.3/gcc/include -I/opt/Qt/5.3/gcc/include/QtWebKitWidgets -I/opt/Qt/5.3/gcc/include/QtWebKit -I/opt/Qt/5.3/gcc/include/QtWidgets -I/opt/Qt/5.3/gcc/include/QtNetwork -I/opt/Qt/5.3/gcc/include/QtPrintSupport -I/opt/Qt/5.3/g
cc/include/QtGui -I/opt/Qt/5.3/gcc/include/QtCore -I. 
或者可以直接在QtWebKitWidgets模块源文件的QtWebKitWidgets.pro文件中加入:
[plain] view plaincopyprint?
1. QT += printsupport 
也行。
接下来执行编译安装:
[plain] view plaincopyprint?
1. sudo make   
2. sudo make install 
配置过程:
安装完成后进入Python3环境验证是否安装成功:
[plain] view plaincopyprint?
1. >>>import PyQt5 
如果提示不存在PyQt5模块,表示安装的PyQt5没有被python3正确识别。默认的安装路径为python的site-packages目录。通常python3的模块安装路径会分成2个,一个/usr/lib/python3,一个/usr/lib/python3.4,两个路径下的模块都能被python3环境正确调用,但是python3.4的site-packages目录下的模块貌似无法调用。PyQt5偏偏默认安装到此目录了。解决办法是为其创建软连接,保险起见,python3目录和python3.4目录分别创建一个:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。