阿雪的学习记录|【python】PyQt5打包问题总结

诸如安装、spyder打不开等问题见前文阿雪的学习记录|Anaconda安装PyQt5、pyinstaller打包等相关问题解决

1. 打包用指令

pyinstaller xxx.py --noconsole --hidden-import PyQt5.QtXml

2. 打包时出现WARNING: lib not found: ……命令行

不要理会,不要理会,不要理会

3. 打包卡在Building COLLECT COLLECT-00.toc太久

没找到原因,但是最终会成功,所以不解决这个问题,就等等吧

4. 双击exe显示找不到ui

打包完成后需要将xx.ui复制到dist-xx文件夹里

5. 双击dist-xx.exe运行,出现ImportError DLL load failed 找不到指定的程序

这个问题包括但不限于本身,就双击exe文件后只要弹出一个带有红色圆形叹号的对话框说缺什么,什么加载失败,什么版本不匹配,这些我都遇到过,分别是:
no modules named 'sip'
ImportError DLL load failed 找不到指定的程序
错误RuntimeError: the sip module implements API v11.0 to v11.2 but the module requires API v12.0
我的方法是更新所有过期包(或者说可更新的包),方法如下:
首先install pip-review:

pip install pip-review

然后自动更新所有可更新的包:

pip-review --auto --use-deprecated=legacy-resolver

这里需要注意,--use-deprecated=legacy-resolver这句非常重要,如果只写pip-review --auto的话,会出现pip is looking at multiple versions of sniffio to determine which version is compatible的提示,然后很多包它都会把满足条件的所有whl或者gz文件下载下来,等到公司大门都关了都下不完,非常慢非常慢,根本等不到它弄完,所以必须要加后面那半句,必须!然后很快就更新好了,此时删除上一次打包出来的dist、build、_pycache_文件夹,重新打包,和上面流程一样,再运行exe文件就成功打开了。
我感觉之所以要自动更新,是因为写代码的时候是缺一个pip一个,所以可能它每次pip的包是匹配于其他老包的,程序也可以正常运行,但是当打包的时候就不符合了,整体更新后所有包一块匹配,这也是为什么不加后半句会很慢,它需要匹配各个包的版本。
更新到最后会有一个错误:ERROR 1: Cannot uninstall 'wrapt'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
不要理会它,因为打包这件事不能有wrapt这个包,我就以为需要所以用pip install -U --ignore-installed wrapt enum34 simplejson netaddr把它给装上了,完了运行打包命令的时候告诉我因为有这个包在所以失败了,大概是这么个错误信息...fails when python-wrapt system package is installed on...,所以又给它uninstall了才打包成功

6. 未完待续

每天学一点点,就能少菜一点点,加油( •̀ ω •́ )y
(久违的小尾巴)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值