正式发布程序

前面,我们开发好了一个HTTP协议测试程序,但是这个程序是Python程序,运行它需要Python解释器。

如果我们要发布程序给客户使用,当然不能要求别人去安装Python解释器,并且敲命令 python httpclient.py。

我们应该做成 可执行程序 发布别人使用。

我们可以使用 PyInstaller 来制作独立可执行程序。

我们的教程有对PyInstaller的专门介绍,点击这里查看

我们前面开发的QT界面程序,在Windows 上只需要执行下面的命令,即可制作独立exe程序

pyinstaller httpclient.py --noconsole --hidden-import PySide2.QtXml

这样就会在当前目录下产生一个名为 dist 的目录。里面就有一个名为 httpclient 的目录,我们的可执行程序 httpclient.exe 就在里面。

其中

--noconsole 指定不要命令行窗口,否则我们的程序运行的时候,还会多一个黑窗口。 但是我建议大家可以先去掉这个参数,等确定运行成功后,再加上参数重新制作exe。因为这个黑窗口可以显示出程序的报错,这样我们容易找到问题的线索。

--hidden-import PySide2.QtXml 参数是因为这个 QtXml库是动态导入,PyInstaller没法分析出来,需要我们告诉它,

最后,别忘了,把程序所需要的ui文件拷贝到打包目录中。

因为PyInstaller只能分析出需要哪些代码文件。 而你的程序动态打开的资源文件,比如 图片、excel、ui这些,它是不会帮你打包的。

我们的 示例代码 需要 从 httpclient.ui 中加载界面,手动拷贝到 dist/httpclient 目录中。

然后,再双击运行 httpclient.exe ,完美!!

有的杀毒软件,比如 360、QQ管家,会认为打包的exe文件有病毒。

我们只要在 弹出的 安全提示对话框中,选择信任程序即可。

程序图标

添加主窗口图标

我们程序运行的窗口,需要显示自己的图标,这样才更像一个正式的产品。

通过如下代码,我们可以把一个png图片文件作为 程序窗口图标。

from PySide2.QtGui import QIcon

app = QApplication([])

# 加载 icon

app.setWindowIcon(QIcon('logo.png'))

注意:这些图标png文件,在使用PyInstaller创建可执行程序时,也要拷贝到程序所在目录。否则可执行程序运行后不会显示图标。

应用程序图标

应用程序图标是放在可执行程序里面的资源。

可以在PyInstaller创建可执行程序时,通过参数 --icon="logo.ico" 指定。

比如

pyinstaller httpclient.py --noconsole --hidden-import PySide2.QtXml --icon="logo.ico"

注意参数一定是存在的ico文件,不能是png等图片文件。

如果你只有png文件,可以通过在线的png转ico文件网站,生成ico,比如下面两个网站

注意:这些应用程序图标ico文件,在使用PyInstaller创建可执行程序时,不需要要拷贝到程序所在目录。因为它已经被嵌入可执行程序了。

白月黑羽教python excel_发布程序相关推荐

  1. 白月黑羽教python excel_一个案例

    从一个示例开始 现在我们要开发一个程序,让用户输入一段文本包含:员工姓名.薪资.年龄. 格式如下: 薛蟠 4560 25 薛蝌 4460 25 薛宝钗 35776 23 薛宝琴 14346 18 王夫 ...

  2. 白月黑羽教python之pytest:课后练习

    本博客记录了白月黑羽教python的pytest课后作业的代码,方便以后查看,希望可以帮助看到这篇博客的人,最后感谢白月黑羽老师的免费教程,讲的非常清楚! 目录 1.测试用例表 2.代码文件布局 3. ...

  3. 白月黑羽教python之selenium:课后练习作业二

    白月黑羽教python之selenium:课后练习 最近自学了白月黑羽老师的自动化测试课程,并非课后作业的准确答案,只是为了个人学习记录,如有不足欢迎留言指点,谢谢大家. 前置条件,使用正确的管理员账 ...

  4. 白月黑羽教python之selenium:课后练习

    本博客记录了白月黑羽教python的selenium课后作业的代码,方便以后查看,希望可以帮助看到这篇博客的人,最后感谢白月黑羽老师的免费教程,讲的非常清楚! 目录 1.测试用例及代码 2.注意点 3 ...

  5. 白月黑羽教python之selenium:课后练习作业一

    白月黑羽教python之selenium:课后练习 最近自学了白月黑羽老师的自动化测试课程,并非课后作业的准确答案,只是为了个人学习记录,如有不足欢迎留言指点,谢谢大家. 测试用例截图 个人完成代码 ...

  6. 白月黑羽教python_其他 | 白月黑羽教Python

    都说Python执行效率不高,为什么还要学习它? 就像你买了一辆汽车,有人却说, 汽车开的比飞机慢多了,买什么汽车啊. 然而,生活中大部分的场合,用汽车比用飞机方便的多. 同样的道理通常你开发的程序( ...

  7. 白月黑羽教python_白月黑羽Python在线教程

    推荐白月黑羽Python在线教程 白月黑羽 站在初学者的角度为大家安排了Python学习教程,帮助大家迅速掌握程序开发技能. http://www.python3.vip/doc/tutorial/p ...

  8. 白月黑羽python_白月黑羽Python在线教程

    推荐白月黑羽Python在线教程 白月黑羽 站在初学者的角度为大家安排了Python学习教程,帮助大家迅速掌握程序开发技能. http://www.python3.vip/doc/tutorial/p ...

  9. 白月黑羽python_白月黑羽来帮你分析现在是选择 Python3.6 还是 Python 3.7

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 选择 Python3.6 还是 Python 3.7? Python 3.7 已经发布了, 又有新版本玩喽!!但是有选择症的你,怎么办呢?像追剧一样,赶快 ...

最新文章

  1. P1197 [JSOI2008]星球大战
  2. 1.12 声明自定义异常
  3. linux循环条件,shell脚本编写 之 条件选择,条件判断,循环语句
  4. 双系统linux进了grub,windows linux双系统开机后进去grub如何修复
  5. 有段时间没更新了。。。放上我在做的东东的截图
  6. activeperl安装不成功_SWOOLE进阶-00环境安装
  7. Codeforces Round #656 (Div. 3) C. Make It Good
  8. vue如何生成公钥私钥_百行Python代码演示1私钥生成多公链公钥原理。|区块链财富指北私钥篇(2)...
  9. Java之数组(上)
  10. java 接口传数组_Restful接口传递数组参数
  11. 单元刚度矩阵与刚度方程
  12. HUAWEI 机试题:黑板上的数涂颜色
  13. 科学家发明创可贴式MP3靠人体热量工作
  14. C# WebApi 返回详细错误信息
  15. Halcon 算子 convexity
  16. 一个IT男的500强生涯
  17. 如何夏普比率在量化交易中的价值
  18. IT人士常喝点菊花茶泡枸杞
  19. java遍历是什么意思_遍历Java String行的最佳方法是什么?
  20. C++基于OpenCV实现实时监控和运动检测记录

热门文章

  1. C++_STL——deque and vector
  2. linux兼容性,Atom 1.23发布:功能增强,兼容性更好
  3. html标签一对一绑定的组件,一种原生组件替换HTML标签的轻量级方法尝试
  4. python中in_python中的min和in用代码实现
  5. excel切片器_excel中的超级好用的筛选神器——切片器
  6. 这几款嵌入式软件测试工具,好用到起飞~
  7. des算法java_Java加密算法笔记--DES算法实现
  8. 超融合架构的优缺点_超融合服务器与传统架构服务器的区别哪?定制服务器厂家简要分析...
  9. linux创建ftp指定目录命令行,Linux-命令行建立FTP
  10. vue 子页面调用父页面的参数_js父页面调用子页面数据时,子页面通过父页面传过来的参数回调父页面具体方法_html/css_WEB-ITnose...