python3之cx_Freeze使用(PyQt5)
1. cx_Freeze简介
Python脚本在装有Python的系统中可以直接双击运行,但绝大多数普通用户并没有配置此类环境,而编译为可执行二进制文件后,用户无需预先安装Python及依赖库即可像运行普通程序一样运行编写好的Python代码。有相当数量的Python库可以实现此类转换,此文档主要对cx_Freeze的使用进行总结分享。
2. cx_Freeze包更替
cx_Freeze官方下载网站:https://pypi.org/project/cx-Freeze/#files
2.1 版本升级
从cx_Freeze官方下载网站根据所使用的Python版本以及PC机系统位数选择相对应的安装包进行下载。目前PC机均已经安装了cx_Freeze包(cx_Freeze_6.1),若要升级到官方最新版本,可直接先在Python路径下(C:\Python37\Lib\site-packages)将当前版本中“cx_Freeze”和“cx_Freeze-6.1.dist-info”两个文件夹删除。删除后在所下载安装包路径下通过cmd指令“pip install cx_Freeze-6.2-cp37-cp37m-win_amd64.whl”进行安装。安装后Python路径下会自动生成新的cx_Freeze包。


2.2 版本回退
由于Python版本的不断迭代更新,不同第三方库可能并没有对当前最新Python版本中相应的内容进行适配。即,有些第三方库需要与相对应的Python版本对应使用才能正常执行所需功能。因此,有时需要将第三方库回退到之前对应的版本。目前,cx_Freeze官方下载网站只提供最新版本而不提供旧版本的下载。所以要想将版本回退到旧版本,同样先将当前路径中已有的cx_Freeze包删除,再cmd指令“pip install cx-Freeze==6.0”进行想要版本的安装。
3. cx_Freeze提供的实例
cx_Freeze模块安装好后,会在site-packages的cx_Freeze模块包中会提供部分模块的打包实例。具体路径为:C:\Python37\Lib\site-packages\cx_Freeze\samples。

3.1 PyQt5实例
以cx_Freeze提供的PyQt5实例进行分析。
3.1.1 脚本编写
虽然提供的实例是PyQt5,但因其只是一个测试实例,所以内部只进行了一个普通窗体的实现。PyQt5实现过程与PySide2基本相同(大体只在GPLv3协议与LGPL协议的差异)。所以,直接将内部调用的“from PyQt5.QtWidgets import QApplication, QWidget”改为“from PySide2.QtWidgets import QApplication, QWidget”进行测试。


实例中的setup脚本如图3-4所示。整体由三块组成,即,
1:导入所需要的模块。
2:setup各参数的配置。
- l Name:所要打包生成.msi的名称。
- l Version:所要打包生成.msi的版本号(版本号需要以纯数字形式进行设置)。
- l Description:对产品进行描述。
- l Options:对生成路径以及内部具体包含和压缩的模块进行设置(所有具体模块的包含与排除均在options中配置)。
- l Executables:工程的入口函数以及打包生成.msi文件的图标等进行设置。
3:options内部各具体命令的配置。
- l Base用来判断是否为Windows系统。
- l Options中为distutils命令,该实例中只用了其中“build_exe”命令。即,将想要包含的模块进行打包。
- l Executables为调用所用到的工程文件“PyQt5app.py”。

3.1.2 程序打包
通过命令python3 setup.py bdist_msi 打包程序,并创建build子目录的同时,还会自动创建dist子目录,里面包含.msi安装包,包含了应用程序cx_freeze包括的所有文件。其中,\build\lib目录下包含了所有被打包的模块文件。Library.zip中压缩了所有需要被打包压缩的文件。


从图中可以看出,还有大部分模块并没有被压缩进library.zip文件中,其中,PySide2占据了较大的体积空间,因此,在2.1.1节中,应对options做具体的压缩命令配置。
- zip_include_packages: 压缩文件中应包含的软件包。使用“*”将所有要包含的模块进行压缩存入zip文件中。
- zip_exclude_packages: 应被排除在压缩文件之外的软件包。使用“*”将所有模块排除在压缩的zip文件之外。

经过压缩后,所有之前打包但并没有被压缩的模块均已被压缩至library.zip中,且.msi安装包有了明显的缩小。 


python3之cx_Freeze使用(PyQt5)的更多相关文章
- python3.6.1 安装PyQt5,以及配置QTDesigner,PyUIC
本人主机win10 64,python版本是3.6.1 64 注意python版本一定得是3.6.1 64位的,我原来电脑是安装的32位的,浪费了好长时间 (MMP) 第一步:安装python,自己官 ...
- 解决python3使用cx_Freeze打包成exe后不能运行
我使用的是python3.4,在使用cx_Freeze打包成exe后发现有些打包后程序能够运行,但是有些无法运行 这是控制台报错 经过多方查找发现原来是windows缺少一些python的扩展包 如下 ...
- Python3.7 下安装pyqt5
第一步:首先进入python安装目录下的 [scripts]. 第二步:执行安装pyqt5的命令:python37 -m pip install pyqt5 出现以下安装过程代表安装成功. 第三步:在 ...
- PyQt5+Python3.5.2-32bit开发环境搭建
1.基本环境. Window 8.1 64bit Python3.5.2-32bit.exe PyQt5 2.安装python. 去官网下载32位版本的python3.5.2(就是x86那个) 备 ...
- Ubuntu 14.04下搭建Python3.4 + PyQt5.3.2 + Eric6.0开发平台
引言 找了很多Python GUI工具集,还是觉得PyQt比较理想,功能强大跨平台,还支持界面设计器.花一天时间折腾了Ubuntu14.04(32位)+ Python3.4 + Qt5.3.2 + P ...
- 使用cx_Freeze 将python3代码打包成.exe程序
在这里分享一下如何在py3下使用cx_Freeze打包pyqt5的程序 首先吐槽下,深深鄙视一下百度,各种百度各种没有,之前我在py2.7下使用pyqt4开发过一个小软件,用的是py2exe进行打包的 ...
- PyQt5系列教程(一)Mac OS X下搭建Python3.5.1+PyQt5开发环境
软硬件环境 OS X EI Capitan Python 3.5.1 PyQt 5.5.1 PyCharm 5.0.1 前言 Qt是一个开源的跨平台的GUI框架,为很多计算机语言提供了应用程序开发接口 ...
- Mac OS X 10.11.1下搭建Python3.4 + PyQt5.5.1 +Eric6.1.1开发平台
由于Python易学.开源.面向对象.可移植性高.库丰富的特点,近期开始学习Python.百度了解了各款Python IDE后,还是认为Eric比较适合我,所以踏上了安装Eric坎坷之路,从选定工具到 ...
- PyQt5应用与实践
一个典型的GUI应用程序可以抽象为:主界面(菜单栏.工具栏.状态栏.内容区域),二级界面(模态.非模态),信息提示(Tooltip),程序图标等组成.本篇根据作者使用PyQt5编写的一个工具,介绍如何 ...
随机推荐
- OAuth2 与OpenID的区别
OAuth2 OpenId OpenId是在OAuth2基础之上实现的 比OAuth2更简便 OAuth2需要在认证后 额外的去再调用用户信息的接口 才能获取用户信息 而OpenId直接伴随token ...
- 这样设计 Java 异常更优雅
转自:lrwinx.github.io/2016/04/28/如何优雅的设计java异常/ 导语 异常处理是程序开发中必不可少操作之一,但如何正确优雅的对异常进行处理确是一门学问,笔者根据自己的开发经 ...
- java 搞笑注释
// _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // O\ = /O // ____/`---'\____ // . ' \\| ...
- 有关spring注解总结
前言 目前企业开发多采用纯注解的方式开发,注解开发的好处:简洁,可读性强 最近学习了spring全家桶,总结了有关spring的常用注解,写的不对的地方,欢迎指正 Spring模块注解 @Config ...
- 在按照ROS官方步骤操作,同时用Git管理整个过程,git clone的新catkin_ws报错: catkin_package() include dir 'include' does not exist relative to
在按照ROS官方步骤操作,同时用Git管理整个过程,git clone的新catkin_ws报错如下: CMake Error at /opt/ros/kinetic/share/catkin/cma ...
- docker run命令指定GPU多个显卡不生效的问题解决和代码示例
问题描述:我有一个程序(app),需要用到显卡来跑.原本的部署方式 是直接修改程序的配置文件来指定要用到的显卡. 这是我服务器的显卡信息:总共3卡 分别是 0卡 ,1卡和2卡. [root@k8s-r ...
- Mybatis-Plus常用的查询方法--看这一篇就够了!!!
前言: Mybatis-Plus作为Mybatis的增强,自己封装了很多简单还用的方法,来解脱自己写sql! 对于项目的搭建小编就不在说了,可以参考: SpringBoot+Mybatis-Plus的 ...
- SQL Server 使用bcp进行大数据量导出导入
转载:http://www.cnblogs.com/gaizai/archive/2010/04/17/1714389.html SQL Server的导出导入方式有: 在SQL Server中提供了 ...
- C# Dapper基本三层架构使用 (三、BLL)
BLL层介绍 业务逻辑层用于做一些有效性验证的工作,以更好的保证程序运行的健壮性.如完成数据添加.修改和查询业务等:不允许指定的文本框中输入空字符串,数据格式是否正确以及数据类型验证:用户权限的合法性 ...
- 常见shell脚本测试题 if/case语句
1.检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限2.提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提 ...