| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> PyQt5(二) python程序打包成.exe文件 -> 正文阅读 |
|
[Python知识库]PyQt5(二) python程序打包成.exe文件 |
目录 前言我们在pycharm上写的程序在发送到一台没有安装python解释器的机器上是不能运行的,甚至还要安装程序中所使用的第三方包,这样极其不方便。但是PC是可以直接运行.exe文件的,因此我们通过将程序打包成.exe进行执行,做到分享即可用。 PS: 如果打包为exe的话,版本尽量选择python3.6+32位版本,因为win64位系统向下兼容32位程序,但是如果不考虑32位系统的话无所谓,直接python64位版本直接打包就可以,只是只能在win64位系统上跑。 一、安装pyinstaller首先安装pyinstaller,使用安装命令:pip install pyinstaller;使用清华大学镜像源加快速度:
结果如下: 我已经安装过了,所以会显示已经存在。 二、pyinstaller打包2.1?pyinstaller打包机制我们写的python脚本是不能脱离python解释器单独运行的,所以在打包的时候,至少会将python解释器和脚本一起打包,同样,为了打包的exe能正常运行,会把我们所有安装的第三方包一并打包到exe。 即使我们的项目只使用的一个requests包,但是可能我们还安装了其他n个包,但是他不管,因为包和包只有依赖关系的。比如我们只装了一个requests包,但是requests包会顺带装了一些其他依赖的小包,所以为了安全,只能将所有第三方包+python解释器一起打包。 2.2 单个文件打包cmd进入py程序项目目录,执行命令:
或者:
ps: -F参数表示覆盖打包,这样在打包时,不管我们打包几次,都是最新的,固定命令。-w表示窗体程序,--icon是设置exe的显示图标,'main.py'是程序的入口(如果是单个文件就换成文件名,如:hello.py),--noconsole 表示不展示cmd窗口,反过来想看cmd窗口就改成--console。*.ico文件可以到网上ico矢量图在线转换工具处理。 常用打包命令: 打包exe:pyinstaller -F setup.py 不带控制台的打包:pyinstaller -F -w setup.py? 打包指定exe图标打包:pyinstaller -F -i xx.ico setup.py 2.3 多个文件打包多个.py文件打包命令格式如下:
具体看:Pyinstaller打包多个.py文件_拓跋梁哲的博客-CSDN博客_pyinstaller打包多个py文件 三、测试对PyQt5(一) PyQt5安装及配置,从文件夹读取图片并显示,模拟生成素描图像中的程序进行打包测试: 3.1 打包的文件?其中main.py是主程序入口文件,其他.py文件是自建模块,需要在主文件中使用。 cmd进入此项目目录进行打包: pyinstaller -F -i crack.ico -w VIPCracker.py -p CholenSql.py -p ImgICon.py -p VIPGUI.py --hidden-import CholenSql --hidden-import ImgICon --hidden-import VIPGUI
3.2 打包结果?打包完成后出现了main.exe文件,现在运行它看是否会正常执行: ?可见打包是成功的,但是有一个缺陷,就是这个.exe非常大,足足有281M。 ?通过检查发现,是因为在打包的时候pyinstaller会自动收集打包过程所需的一些py依赖包,而我是用Anaconda自带的base进行程序运行的,而其中安装了很多第三方库,以至于都会被打包起来。 四、新建虚拟环境打包为了解决不将程序相关的第方三库一起打包,一个最直接的想法是新建一个虚拟环境,里面只装我们当前项目需要的py包,这样打包过程中就不会搞进去一些没用的py包了。我们在Anaconda中创建一个新的虚拟环境运行PyQt项目:pyqt_env 命令详见:Anaconda中虚拟环境在命令行中的查看、创建、切换 ?进入新的虚拟环境查看安装的第三方模块: ?可以看到它依旧自带了太多的第三方库,由于没有找到在anaconda下创建“干净的”虚拟环境方法,因此删除后用Python3.3 之后的模块 venv 代替 virtualenv 工具(用venv的好处是不用单独安装,3.3 及之后的版本,都可以使用此创建虚拟环境)来创建虚拟环境: 在D:\python\Anaconda\envs目录下用venv模块创建一个虚拟环境: ?激活虚拟环境: cmd进入D:\python\Anaconda\envs\pyqt_env\Scripts下,然后输入激活命令:activate.bat(或者直接输入activate);退出虚拟环境:deactivate.bat 可以看到只有两个基本包,达到目的。安装本次测试需要的包: ?pycharm添加新创建的虚拟环境: 添加新环境之后确保程序可以正确运行,然后cmd进入新创建的虚拟环境,?安装 pyinstaller,再cd到项目文件夹:
?打包结果如下: ? ?可以看到从原来的281M降到了79.3M,达到了我们期望的目标。 总结本次实验练习将程序打包成.exe文件,同时创建了用不同方法新的虚拟环境。 参考文章: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 18:39:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |