信创麒麟V10系统下PyQt5的源码编译踩坑记录

本文记录了在信创系统麒麟V10下,编译PyQt的过程。

软件版本信息:Gcc 7.3.0,Qt 5.15.13,Python 3.10.12,PyQt 5.15.9,sip 6.5

1.背景

    最近需要使用PyQt5,由于Qt和Python都是自己编译的,因此PyQt5也需要自己编译。原本编译一个PyQt5问题不大,但是网上的资料里都有点坑,不得己多测尝试,踩坑记录如下。

2.第一种方案(失败)

    首先,参考了网上的发方法,使用PyQt5-5.15.2的源码加上sip-4.19.25的方式进行编译。
我使用的Python 版本是3.10,GCC 7.3,先编译sip,再编译PyQt5

tar -zxf sip-4.19.25.tar.gz
cd sip-4.19.25
python3 configure.py
make && make install
tar -zxf PyQt5-5.15.2.tar.gz 
cd PyQt5-5.15.2 
python3 configure.py --qmake=/usr/bin/qmake-qt5 --sip=/usr/local/python3/bin/sip
make && make install

之后,貌似成功了,进入Python后,import PyQt5没问题,但是import PyQt5.QtCore就会报错:

No module named 'PyQt5.sip'

这。。。明明是自己编译的,各种库都在,怎么会出这个错误???

3.尝试解决问题

    之后,各方查找资料,说啥的都有,有说不兼容的,有说PyQt5的版本和sip版本不对应的,看来遇到这个问题的人比较少,只能一步步解决了。
    先更换版本,从https://mirrors.cloud.tencent.com/macports/distfiles/py-pyqt5/ 这里下载了PyQt5-5.15.9.tar.gz的源码,又下载了sip 5.5的源码,一样的,开始编译sip,结果sip编译完成后,sip的二进制文件没了,这。。。
    自此,再也找不到其他资料了,陷入死胡同。后来,在stackoverflow的夹缝了,找到了蛛丝马迹,再加上各个不同版本的试,总算编译完成。

4.新的方案

    原来,sip的用法已经完全变了,以前的方式都已经失效,只是资料很少而已。
   首先,Python下可以直接安装sip,不用源码编译。
   注意版本!!一定要注意版本,否则后面会又坑,下面的版本是我尝试了很多次,才找到的合适的版本组合!

python3 -m pip install sip==6.5.1    #注意版本

之后,Python的bin下,就会多出几个sip-*的文件,进入源码目录编译即可:

tar -zxf PyQt5-5.15.9.tar.gz 
cd PyQt5-5.15.9 
sip-install    #时间很长,等就行

如果中途出现错误

Unable to import 'project.py': No module named 'pyqtbuild'

只需要安装一下pyqt-builder就行:

python3 -m pip install pyqt-builder==1.15.4

sip-install之后,就会自己编译、安装,在之后就可以用了。
import PyQt5没问题,import PyQt5.QtCore又来了:
No module named 'PyQt5.sip'
这。。。又回到原点。。。

5.问题解决

    最后,我想了一下,有没有可能,'PyQt5.sip'是一个独立的需要安装的模块呢?只是网上的资料都没有提过?于是马上上手,还真找到了源码。下载https://pypi.org/project/PyQt5-sip/12.12.2/#files里的源码,注意版本,12.12.2是跟上面选择的各个库版本相兼容的。

tar -zxf PyQt5_sip-12.12.2.tar.gz 
cd PyQt5_sip-12.12.2
python3 setup.py build
python3 setup.py install

完成,这回,各个功能都正常了,问题解决。

不过,回想起第一个PyQt5-5.15.2+sip-4.19.25的组合,是不是也是可行的呢?也许,但我没精力去验证了。

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值