这里介绍了用eric5集成qt写qui程序,如果想在没有装pyqt的windows系统内运行,则需要把源代码打包为exe文件,python下打包exe的程序有py2exe,pyinstaller和cx_freeze,前两款一个停止更新,一个更新缓慢,只剩下cx_freeze支持最新版的python 3.3,而eric5正好有一个cx_freeze插件,可以很方便的打包源程序,本文就是介绍使用方法。
准备工作:
安装插件:
点击菜单栏Plugins > plugin Repository,蹦出对话框,点击下部的update,找到cx_freeze插件,点击download&install,下载完毕后蹦出安装对话框,点击next,next,点击install,点击关闭。
点击project > Pacages > Use cx_freeze,就可以看到cx_freeze的设置对话框了。
设置软件:
按照下图设置参数:
点击确定,蹦出一个对话框,生成以下代码。
--target-dir=F:\2 --target-name=welcome.exe --base-name=Win32GUI --compress -OO --include-modules=re welcome.pyw copying E:\Python33\lib\site-packages\cx_Freeze\bases\Win32GUI.exe -> F:\2\welcome.exe copying C:\WINDOWS\system32\python33.dll -> F:\2\python33.dll writing zip file F:\2\welcome.exe Name File ---- ---- P PyQt4 E:\Python33\lib\site-packages\PyQt4\__init__.py m PyQt4.QtCore E:\Python33\lib\site-packages\PyQt4\QtCore.pyd m PyQt4.QtGui E:\Python33\lib\site-packages\PyQt4\QtGui.pyd m __main__ welcome.pyw m _bisect m _bz2 E:\Python33\DLLs\_bz2.pyd ... 中间省略 ... m re E:\Python33\lib\re.py m reprlib m sip E:\Python33\lib\site-packages\sip.pyd m sre_compile E:\Python33\lib\sre_compile.py m sre_constants E:\Python33\lib\sre_constants.py m sre_parse E:\Python33\lib\sre_parse.py ... 中间省略 ... m types P ui ui\__init__.py m ui.Dialog ui\Dialog.py m ui.Ui_Dialog ui\Ui_Dialog.py m unicodedata E:\Python33\DLLs\unicodedata.pyd ... 中间省略 ... copying E:\Python33\lib\site-packages\PyQt4\QtCore.pyd -> F:\2\PyQt4.QtCore.pyd copying E:\Python33\lib\site-packages\PyQt4\QtCore4.dll -> F:\2\QtCore4.dll copying E:\Python33\lib\site-packages\PyQt4\QtGui.pyd -> F:\2\PyQt4.QtGui.pyd copying E:\Python33\lib\site-packages\PyQt4\QtGui4.dll -> F:\2\QtGui4.dll copying E:\Python33\DLLs\_bz2.pyd -> F:\2\_bz2.pyd copying E:\Python33\lib\site-packages\sip.pyd -> F:\2\sip.pyd copying E:\Python33\DLLs\unicodedata.pyd -> F:\2\unicodedata.pyd cxfreeze finished.
主要是拷贝一些程序运行所需要的库和生成一个主程序。
到目标文件位置,双击welcome.exe,就可以运行程序了。
出现的问题:
- Missing modules:? ui.Dialog imported from __main__,运行exe提示no module named ‘PyQt4.QtCore4’
按理说cx_freeze只需要调用入口脚本(welcome.py),自定义的module(ui文件夹里面的文件),以及自定义module里import的module都会自动加载,但是这里除了入口脚本里import的包被加载外,其他的都提示no module named ‘module名’。
这里给了一个说法,被import的文件所在的文件夹下必须要有一个__init__文件,里面什么都不用写。本例中在ui文件夹下添加一个__init__文件。 - no module named ‘re’
运行exe文件时提示没有re,在cx_freeze插件的advanced选项的include modules里添加re。其实就是cx_freeze的–include-modules参数。
- 打开exe文件时蹦出cmd窗口
basename设为win32gui才可以。
录一个视频,没声音,供参考。
Thanks the contents about cx_FREEZE
我给你发了一个邮件,发到GMAIL里了,请看一下,有问题请教。
我的没有成功,我现在用cxfree插件版本5.2.1。用最新到eric5.3.7,下载插件,然后就看到插件安装上了,但是active显示到是NO,提示The cxfreeze executable could not be found.不知道哪里出了问题。请教下
点开plugin infos,找到cxfree,字体颜色是否为红色,如果黑色右键就可以active,或者卸载重装cxfree,或者升级到最新版eric,python3.3看看
前提是你系统上已经装过cxfreeze。This plug-in is just a frontend to cxfreeze. You have to install cxfreeze an your
system in order to use it (it is not included).
你好,还是没有解决这个问题,能否仔细交流一下?
这个,eric论坛里提问后的解释是插件只是前端,确保本机已经装过cx-freeze。我上个回答用的是win8.1系统并且之前没有装过eric,装了最新的eric可以active。后来在xp上,之前装过eric,更新为最新版,cx_freeze不能active。
可能是系统原因也可能是版本原因,最新的3.4出来了,你可以试试python3.4和对应版本的cx-freeze,看行不行,或者在命令行下能不能使用cx-freeze
我也碰到了Eric5安装cxfreeze插件不成功的情况。active 显示到是 NO,提示 The cxfreeze executable could not be found.请教下是如何解决的?谢谢!
环境如下:
Python:3.4.1 Qt:4.8.6 PyQt:4.11.2 Eric:5.4.6
cxfreeze也提前安装过了,cxfreeze –version显示版本为cxfreeze 4.3.3,要安装的cxfreeze插件版本为5.3.3。
我也碰到了Eric5安装cxfreeze插件不成功的情况。active 显示到是 NO,提示 The cxfreeze executable could not be found.请教下是如何解决的?谢谢!
环境如下:
Python:3.4.1 Qt:4.8.6 PyQt:4.11.2 Eric:5.4.6
cxfreeze也提前安装过了,cxfreeze –version显示版本为cxfreeze 4.3.3,要安装的cxfreeze插件版本为5.3.3。
本机上应该装cxfreeze才行,到这里http://sourceforge.net/projects/cx-freeze/files/4.3.3/ 下载安装,然后到插件里右键active
版主你好,请教一个问题:打包完成后,启动程序,在主窗口的工具栏上点击按钮,没有反应,无法启动对话框,而在Eric调试中是好的,不知是啥原因?
我也碰到了Eric5安装cxfreeze插件不成功的情况。active 显示到是 NO,提示 The cxfreeze executable could not be found.请教下是如何解决的?谢谢!
环境如下:
Python:3.4.1 Qt:4.8.6 PyQt:4.11.2 Eric:5.4.6
cxfreeze也提前安装过了,cxfreeze –version显示版本为cxfreeze 4.3.3,要安装的cxfreeze插件版本为5.3.3。