pyinstaller 打包pyqt5 之报错 no module named pyqt5.sip

使用PyQt5做了一个GUI程序,在ubuntu 18运行源码没有问题,但是打包以后报错

虽然在我的程序中没有显式的使用到PyQt5.sip,但是PyQt5.Qtcore中会导入该模块

no module named pyqt5.sip

下面总结几种常用的解决方法

解决方式一

在程序中直接导入,再打包

import PyQt5.sip

此解决方式对我遇到的情况无效

解决方法二

在打包的时候指定该隐藏导入

pyinstaller --hidden-import PyQt5.sip main.py

或者修改spec文件

	...
	hiddenimports=['PyQt5.sip'],
	...

此解决方式对我遇到的情况无效

解决方法三

通过pip重新卸载安装PyQt5和PyQt5.sip

此解决方式对我遇到的情况无效

最终解决方法(成功)

  1. 卸载PyQt5和PyQt5.sip

  2. 通过源码来安装PyQt5和PyQt5.sip

  3. 下载PyQt5.15.5.tar.gz以及sip-4.19.25.tar.gz

  4. 进入解压以后的sip文件夹先编译sip

    sudo python3 configure.py --sip-module PyQt5.sip
    
    sudo make
    
    sudo make install 
    
  5. 再编译PyQt5

    sudo python3 configure.py
    
    sudo make
    
    sudo make install 
    

我这里使用的只是单核编译,可能需要一段时间,设备内存大的可以开启多核编译更快。
安装完以后就不会出现pyqt5.sip找不到的问题了。


版权声明:本文为ling_lang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。