0.背景

本弱初学PyQt5,写了一个GUI小程序,但在用PyInstaller打包时出现了不少问题,现将几个比较大的问题记录如下,希望以后能记住。

1. 资源打包

首先是资源打包的问题,我写的程序引用了一张图片,那么在没经过特殊处理的情况下如果想让程序正常运行,就必须把图片放在和程序同一个目录下,但这样总觉得不太舒服。我在网上看到有三种解决方法:一是通过修改PyInstall配置文件*.spec来实现打包,但是在我的环境下不成功;二是自己写程序对图片进行Base64编码存在字符串里并存储在另一个脚本中,然后令主程序import它;三是用PyQt5自带的工具:pyrcc5进行处理。本质上第三种和第二种的原理是基本一样的,但本着“不(xiang)重(jin)复(ban)造(fa)轮(tou)子(lan)”的原则,我更喜欢第三种。操作如下:

一、创建一个扩展名为qrc的文件,内容如下(mouse.ico是图片文件,且标签可以有多个):

mouse.ico

二、在程序目录执行命令

pyrcc5 images.qrc -o images_qr.py

命令语法类似于gcc,images.qrc是刚才那个文件,images_qr.py是输出的含有图片序列化字符串的python文件。

三、在主程序的开头引用

import images_qr

同时将文中引用图片的路径前加冒号

QIcon(‘:mouse.ico‘)

2. PyInstaller打包程序

其次是打包的问题,如果按照普通命令打包,会产生“No module name ‘PyQt5.sip‘”的错误,这是因为PyInstaller没有找全PyQt5依赖包,需要我们亲自指定:

pyInstaller --hidden-import PyQt5.sip -F mousenew.py -w -i mouse.ico

这样就能成功打包了。

3. 总结

注意以后打包时先别带-w参数,不然打包后的exe如果运行错误就直接弹个Fail to execute the script.然后就退出了,连调都没法调,如果是命令行打包,至少错了它还会在命令行打印Traceback,等命令行程序没错了再加-w。

pyqt5能直接编译python吗_用PyInstaller打包用PyQt5编写的python程序相关推荐

  1. ubuntu安装python百度经验_如何在Ubuntu 20.04上安装Python 3.9(含python编译安装和使用Apt命令安装)...

    在本文中,我们将向您展示在Ubuntu 20.04上安装Python 3.9的两种方法.第一种使用APT命令安装Python3.9,第二种是在Ubuntu20.04上编译安装Python 3.9.本教 ...

  2. 学pyqt5之前需要学python吗_【第一节】PyQt5简介

    本教程是翻译自http://zetcode.com/gui/pyqt5/,因水平有限,难免会有纰漏,望谅解,如果是在难以理解可以直接翻看英语网站. 本教程适合初学者和中级程序员.看完这个教程,你将能够 ...

  3. c语言转换为python语言_【转】用C语言扩展Python的功能

    一.简介 Python是一门功能强大的高级脚本语言,它的强大不仅表现在其自身的功能上,而且还表现在其良好的可扩展性上,正因如此,Python已经开始受到越来越多人的青睐,并且被屡屡成功地应用于各类大型 ...

  4. 大学使用python 编辑器_[雪峰磁针石博客]2018 最佳python编辑器和IDE

    IDE没有统一的标准,自己习惯就是最好的.本文列出一些较常用的IDE,供大家参考. 一般而言,WingIDE.PyCharm.Spyder.Vim是比较常用的IDE. Spyder Spyder是Py ...

  5. python类加载_如何重新加载一个类在python shell?

    如果我导入一个定义了属于同一个包的同名类的模块,它将被导入为一个类,而不是一个模块,因为父包的__init__.py.详情请参见 different import results at differe ...

  6. excel用python数据分析_(转载)像Excel一样使用python进行数据分析

    Excel是数据分析中最常用的工具,本篇文章通过python与excel的功能对比介绍如何使用python通过函数式编程完成excel中的数据处理及分析工作.在Python中pandas库用于数据处理 ...

  7. vscode导入python包_使用Visual Studio Code将请求导入Python

    前言:我试过这篇文章中的每一个建议.它们都不起作用. 我试图将模块requests导入到一个python文件中(使用python2.7.14). Visual Studio代码在控制台中输出了此代码: ...

  8. PyQt5初学试验记录(三):Pyinstaller打包小结

    前言:本记录为笔者自学过程中的简单笔记,说明了从安装库到最终打包成.exe的过程,分为三个部分,供初学者参考交流,存在表述有误的部分还请读者们多多指教,下方为第三部分目录. 文章目录 一.Pyinst ...

  9. python fail to execute,pyinstaller 打包出现“Failed to execute script XXX“问题

    pyinstaller 打包PyQt5的 *.exe 程序出现"Failed to execute script XXX"问题 由于本人刚接触python,偶然看到用PyQt5做窗 ...

最新文章

  1. Android中ActivityManager学习笔记
  2. (转载)四种常见的 POST 提交数据方式
  3. 详解线程本地变量ThreadLocal
  4. 单表数据量过大处理策略
  5. mac系统快捷键大全详细介绍
  6. python 提升效率_@Python 程序员,如何最大化提升编码效率?
  7. nodeJS 开发微信公众号
  8. python数据分析函数大全_Python常用数据分析函数集合
  9. hive-04-Hive函数大全
  10. eclipse 选取当前行_苏云金杆菌的防虫效果,取决于能否科学利用,绝非一句“用就行”...
  11. c语言 键盘扫描码 c-free,FreeBarcode条形码制作工具
  12. 大数据之Python实现每日钉钉数据自动推送
  13. 如何将一个服务器加入域控中,Windows Server如何创建域并加入域
  14. 最小元素的min函数
  15. bmp180气压传感器工作原理_40张动图看懂各种传感器工作原理
  16. Linux下如何拷贝隐藏文件
  17. python使用tkinter库,封装操作excel为GUI程序
  18. Ubuntu1804安装
  19. Hi,你想要的在线创建架构图都在这儿!(一)
  20. 电脑配件 - 电脑组成以及性能指标分析 - 学习/实践

热门文章

  1. C# 字符串按设置的格试在前面或后面增加空格或其它字符
  2. wkhtmltopd 下载安装以及php环境下的使用
  3. Orchard中如何配置远端发布
  4. Ueditor/自定义配置
  5. ado.net封装类
  6. Linux下PortSentry的配置
  7. 用cisco命令确定和跟踪DOS***源
  8. 发送Gmail邀请.
  9. Java_输出60的十六进制
  10. .net core中使用缓存(cache)