--- 作者吴疆, 未经允许, 严禁转载, 维权必究 ---
--- 欢迎指正, 需要源码和文件可站内私信联系 ---
功能说明: 在 Ubuntu 系统 Python2.7 下安装 QT 库, sip,PyQt5,qt-designer,pyuic 等, 搭建 Python GUI 编程环境
运行环境: ubuntu14.04,Python2.7,sip-4.16.8,PyQt-gpl-5.2.1,qt4-designer,pyuic4, 仅在以上环境中验证过本博客有效性
一, 相关介绍
由于之前在 windows7 系统 Python3.7 下搭建过 PyQt5 环境(点击这里), 相比于 PyQt4, 对 PyQt5 更为熟悉, 因此, 这次在 ubuntu14.04 系统 Python2.7 下也着手搭建 PyQt5 环境. 然而, 发现不是那么轻松, Python3 中提供了 PyQt5 包, 直接 pip 安装即可, 而 Python2 若想安装 PyQt5 必须利用源码编译安装, 且在编译安装 PyQt5 需安装相关 QT 库, sip 等, 而 qt-designer 和 pyuic 的作用在这篇博客中已经提及.
二, 环境搭建
参考链接: 在 ubuntu14.04 64bit 上安装 python-pyqt5 软件包(Python2.7)(极重要参考, 强烈建议阅读),sip-4.16.8 下载, PyQt-gpl-5.2.1 下载, 配置 PyQt5 环境 for Python3.4
(1)安装 QT 库, 相比于自己编译 QT 库, 执行以下命令进行安装比较简单
sudo apt-get install qt-sdk
(2)安装 sip-4.16.8
sip 是 Python 调用 C/C++ 库的必备模块, 类似于 swig,sip 作为 PyQt 的依赖工具, 安装 PyQt 之前必须先安装对应版本的 sip, 同时, PyQt 编译时使用的 sip 版本必须与 Python 默认调用的 sip 保持一致, 否则 Python 中无法调用 PyQt.ubuntu14.04 中一般自带安装 sip-4.15.5, 终端输入 sip -V 命令查看已安装的 sip 版本, 若为其他版本, 查看 / usr/lib/python2.7/dist-packages / 目录下是否存在 sip 相关文件, 将其删除, 执行删除命令:
# 若存在 sip 相关目录, 还需执行第 1 条删除命令, 否则只执行第 2 条命令
sudo rm -rf /usr/lib/python2.7/dist-packages/sip 目录名
sudo rm /usr/lib/python2.7/dist-packages/sip*
根据提供的参考链接下载 sip-4.16.8.tar.gz, 拷贝至工程目录下 (本文为 / home/rcnn/HK_Double_Camera) 执行以下命令:
- tar -xzvf sip-4.16.8.tar.gz
- cd sip-4.16.8
python configure.py
- make
- sudo make install
安装完成后, 可分别在终端和 Python 中查验 sip 版本是否一致
- # 终端查看 sip 版本
- sip -V
- # 查看 Python 调用的 sip 版本(通过上述编译安装操作得到的)
- python
- import sip
- print(SIP_VERSION_STR)
如不一致, 需要重新执行上述删除, 编译安装过程, 版本不一致意味着后面编译 PyQt 所使用的 sip 和 Python2.7 调用的 sip 不一致, 导致在 Python2.7 中调用 PyQt 的相关模块出现如下类似错误:
the sip module implements API v11.0 but the PyQt5.QtCore module requires API v11.1
make install 与查验版本截图:
(3)PyQt5 编译安装
根据提供的参考链接下载 PyQt-gpl-5.2.1.tar.gz, 拷贝至工程目录下 (本文为 / home/rcnn/HK_Double_Camera) 执行以下命令:
- tar -xzvf PyQt-gpl-5.2.1.tar.gz
- cd PyQt-gpl-5.2.1
- python configure.py --sip-incdir=/usr/include/python2.7
- make -j4
- sudo make install
执行 make 时, 若报错 strip:/usr/bin/pyuic5: 不可识别的文件格式, 则利用 gedit 打开 Makefile 文件, 注释该句后重新 sudo make install
- gedit Makefile
- # 注释 -strip $(INSTALL_ROOT)/usr/bin/pyuic5
以上编译安装过程截图:
验证 PyQt5 是否安装成功, 可戳例子 1, 例子 2
(4)安装 qt4-designer
参考链接: PyQt5 和 qt-designer 结合
qt4-designer 用于设计 ui 界面, 产生相应. ui 文件
xxxxxxx 待填坑
(5)安装 pyuic4
参考链接: PyQt5 和 qt-designer 结合
pyuic4 用于将 qt4-designer 产生的. ui 文件转换为. py 文件以供调用
xxxxxxx 待填坑
三, 报错与解决
本人安装过程比较顺利, 除以上提到的一个 error 外, 只遇到一个因版本问题引起的大坑: 按照上文参考博客安装了 sip 官网 (https://riverbankcomputing.com/software/sip/download) 最新的 sip-4.19.15.tar.gz 和 PyQt 官网 (https://riverbankcomputing.com/software/pyqt/download5) 最新的 PyQt5_gpl-5.12.1.tar.gz, 在查看了 Readme 相关说明, 发现满足版本要求, 但依然会在 PyQt5 编译阶段报错:
make[1]:*** [sipQtCoreQLoggingCategory.o] 错误 1
make[1]: 正在离开目录 '/home/rcnn/HK_Double_Camera/PyQt5_gpl-5.12.1/QtCore'
make:*** [sub-QCore-make_first-ordered] 错误 2
- error: const class QLoggingCategory has no member named 'isInfoEnabled'
- error: no matching function for call to 'QLoggingCategory::QLoggingCategory(const char*&, QtMsgType&)'
根据 error 信息, 发现 1 个错误是因为未定义 isInfoEnabled()函数引起, 另 1 个错误是因为本该接收 1 个参数输入, 但接收了 2 个, 对相应. cpp 文件注释 / 修改后 make 将不再报错, 但最终却不能生成 PyQt5 的相关模块, 具体原因不明, 待填坑, 暂时解决办法为卸载重装上文版本. 由于官网不再提供老版本的 sip 和 PyQt5, 搜了很久在 SourceForge.NET 找到了.
四, 其他
(1)SourceForge.NET
摘自百度百科: SourceForge.NET, 又称 SF.NET, 是开源软件开发者进行开发管理的集中式场所. SourceForge.NET 由 VA Software 提供主机, 并运行 SourceForge 软件. 大量开源项目在此落户(截至 2009 年 2 月, 超过 23 万的软件项目已经登记使用超过 200 万注册用户的服务, 使 SourceForge.NET 开放源码的工具和网络应用的最大集合), 包括维基百科使用的 MediaWiki, 但也包含很多停止开发和一人开发的项目. SourceForge 是全球最大开源软件开发平台和仓库, 网站建立的宗旨, 就是为开源软件提供一个存储, 协作和发布的平台. SourceForge 上拥有大量非常优秀的开源软件, 事实上, 这些软件完全可以代替一些商业软件.
(2)PyQt4 安装
参考链接: Ubuntu 安装 PyQt4
实践过程中, PyQt5 安装了很久没成功, 一度懊恼, 便尝试安装 PyQt4, 想着把基于 PyQt5 的代码改成 PyQt4 的应该也可行. 因此参考了上述博客安装 PyQt4 的过程, 由于有包, 利用 apt-get 或 pip 安装十分方便, 就像 python3 安装 PyQt5 一样的简单, 安装命令如下:
------------------------------------------ 写作不易, 欢迎打赏 -------------------------------------
(支付宝扫码) (微信扫码)
posted on 2019-04-08 16:28 吴疆 阅读(...) 评论(...) 编辑 收藏
来源: https://www.cnblogs.com/deeplearning1314/p/10671347.html