将python3.1+pyqt4打包成exe
将python打包成exe的程序有很多,比如py2exe、PyInstaller等等,但是到目前为止,它们对python3.1支持的都不好,所以这里我要介绍一下cx_freeze 4.2.2,它还能支持跨平台,可以在windows和linux运行。
cx_freeze的下载网址为 http://sourceforge.net/projects/cx-freeze/files/ ,要根据已安装的python版本进行选择。比如我使用的是python3.1,所以就要下载cx_Freeze-4.2.2.win32-py3.1.msi这个文件。运行这个安装包后,相关程序就会被拷贝到python的目录下。主要在两个地方,一个是C:/Python31/Scripts,另一个是C:/Python31/Lib/site-packages/cx_Freeze
在以前版本的cx_Freeze中,是通过FreezePython.py这个脚本将py转换为exe,而在4.2.2这个版本中,FreezePython.py已经不见了,主要的工作交给了C:/Python31/Scripts下的cxfreeze.bat来完成。
使用cx_Freeze完成python打包exe主要有两种方法:
第一种,直接运行cxfreeze.bat通过:
先进入cmd命令行,进入C:/Python31/Scripts目录,然后运行cxfreeze.bat -h 就可以看到它的使用说明了。我们可以用cx_freeze自己的sample做个试验。
进入到c:/python31/scripts/下,运行
cxfreeze C:/Python31/Lib/site-packages/cx_Freeze/samples/PyQt4/PyQt4app.py --install-dir=d:/123
pytqt4app.py就会被打包成exe,并且它所用到的库文件,也被一并考到了d:/123目录下。
第二种,方法,运行setup.py:
在cxfreeze附带的例子 C:/Python31/Lib/site-packages/cx_Freeze/samples/PyQt4 中,有一个setup.py文件,打开这个文件,我们发现其内容为:
- import sys
- from cx_Freeze import setup, Executable
- base = None
- if sys.platform == "win32":
- base = "Win32GUI"
- setup(
- name = "simple_PyQt4",
- version = "0.1",
- description = "Sample cx_Freeze PyQt4 script",
- executables = [Executable("PyQt4app.py", base = base)]) #PyQt4app.py即为要打包的文件
import sys
from cx_Freeze import setup, Executable
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup(
name = "simple_PyQt4",
version = "0.1",
description = "Sample cx_Freeze PyQt4 script",
executables = [Executable("PyQt4app.py", base = base)]) #PyQt4app.py即为要打包的文件
通过运行这个脚本,就可以自动的完成打包工作:
比如,我们进入 C:/Python31/Lib/site-packages/cx_Freeze/samples/PyQt4目录下,
运行
setup.py build
之后,在此目录下会出现一个build/exe.win32-3.1目录,该目录下即可看到打包完成的exe文件了。我们要想对自己的脚本打包,将这个setup.py 拷贝过去,再将其中
executables = [Executable("PyQt4app.py", base = base)])
的PyQt4app.py改为自己的脚本名即可。
打包过程中出现的问题:
对中文支持的问题,如果脚本中存在中文,且编码格式没有特别指出,打包的过程中会出现: UnicodeDecodeError: 'utf8′ codec can't decode bytes in position 1602: invalid data 这类的错误,在http://www.cnblogs.com/xinzaitian/archive/2010/12/10/1902481.html这篇博文中,作者提到必须将中文删除掉。
其实中文字符可以保留,只要在脚本文件的行首加上:
#!/usr/bin/env python
#coding=utf-8
就可以了
点击生成的exe文件是否可以使用了!很爽吧!怎么觉得启动的时候后面有个黑糊糊的窗口不舒服?那你在生成命令里面加个参数吧!加一个参数base-name设为 win32gui
例子:
cxfreeze hello.py --target-dir dist --base-name=win32gui
另外的一个问题是,打包好的exe文件拿到 “桌面”或者别的中文路径下运行,就会弹出一个窗口显示cannot get zipimporter instance,这个到目前为止还没有找到好的解决方法
将python3.1+pyqt4打包成exe的更多相关文章
- 解决python3使用cx_Freeze打包成exe后不能运行
我使用的是python3.4,在使用cx_Freeze打包成exe后发现有些打包后程序能够运行,但是有些无法运行 这是控制台报错 经过多方查找发现原来是windows缺少一些python的扩展包 如下 ...
- Pycharm+Python3+python工程打包成exe+在windows下自动定时运行
python3打包成exe---pyinstaller方法:https://www.cnblogs.com/mufenglin/p/7479281.html 按照如上方式打包后,执行dist文件夹(新 ...
- 【爬坑】python3+pyqt5+pyinstaller 打包成exe的各种问题
windows系统+python3+pyqt5+pyinstaller打包,经常会出现各种打包异常情况.如果代码没有特别异常,那么综合原因,大抵都是这四个元素之间的匹配问题,引起的.作者:一心狮链接: ...
- python3.7 打包成exe程序(只需两行命令)
根据博客作者louniuous的python3.7 打包成exe的一种方法 pyinstaller一文改编简化 环境:pycharm2018.1+win7+python3.7 工具:pyinstall ...
- 将 Python3 文件打包成 exe 文件
我们用 Python 写好的代码,如何给别人在没有配置 Python 环境的情况下直接使用呢?尤其是面向 windows 众. 因为 Python 是一门解释性的语言,离开了 Python 解释器,P ...
- python3.x使用cxfreeze将.p打包成.exe
之前写了一个使用ffplay批量查看格式为h264的图片,每次抽帧后都要打开pycharm编译器来运行程序,然后才能正常查看图片,或者在其他没有安装python环境的电脑中运行,很不方便.为此,在网上 ...
- python3项目打包成exe可执行程序
使用pyinstaller将python文件打包成exe程序,打包步骤如下: 一.安装pyinstaller (1)win+R输入cmd,打开命令窗口 (2)安装pyinstaller,安装指令:pi ...
- python打包成exe
目前有三种方法可以实现python打包成exe,分别为 py2exe Pyinstaller cx_Freeze 其中没有一个是完美的 1.py2exe的话不支持egg类型的python库 2.Pyi ...
- py库:把python打包成exe文件(pyinstaller)
http://blog.csdn.net/be_quiet_endeavor/article/details/73929077 用Pyinstaller把Python3.4程序打包成可执行文件exe ...
随机推荐
- 34、uevent机制说明
class_device_create(4.3.2内核是device_create->device_create_vargs->device_register->device_add ...
- 使用ganglia监控hadoop及hbase集群 分类: B3_LINUX 2015-03-06 20:53 646人阅读 评论(0) 收藏
介绍性内容来自:http://www.uml.org.cn/sjjm/201305171.asp 一.Ganglia简介 Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测 ...
- Linux system函数返回值
例: status = system("./test.sh"); 1.先统一两个说法: (1)system返回值:指调用system函数后的返回值,比如上例中status为syst ...
- shell脚本if条件总结
原文链接:https://geniuspeng.github.io/2018/03/12/shell-if/ shell编程中,if-then是一种常见的控制流命令,而if的条件判断一般采用内置命令t ...
- 二次封装CoreData
(1)创建一个Data Model文件.命名为MyModel.xcdatamodeld (2)创建Users表,加入如图的字段 (3)创建NSManagedObject subclass表实体文件 ( ...
- ios开发runtime学习五:KVC以及KVO,利用runtime实现字典转模型
一:KVC和KVO的学习 #import "StatusItem.h" /* 1:总结:KVC赋值:1:setValuesForKeysWithDictionary实现原理:遍历字 ...
- 使用truss、strace或ltrace诊断软件的"疑难杂症"
原文链接 简介 进程无法启动,软件运行速度突然变慢,程序的"Segment Fault"等等都是让每个Unix系统用户头痛的问题,本文通过三个实际案例演示如何使用truss.str ...
- bootstrap如何把表单select input button弄在一行
bootstrap很多折叠样式css都已经写好,可以直接用,很方便.但是,如果遇到一些bootstrap文档里面没有的例子,估计很多初学者都懵了,然后会折腾很久也未见得有效.今天主要讲如何把selec ...
- Linux中LVM2原理及制作LVM2
Linux中LVM2原理及制作LVM2 一.LVM原理 [MD]:Multi Device 多设备 Mdadm是一个用户空间工具,是RAID的管理工具,与真正的RAID工作没有太大关系.真正的RAID ...
- ios 第一篇文章-xcode6.2键盘调不出来
ios 第一篇文章 不晓得有没有人遇到过ios代码内调用键盘(keyboard)调不出来的情况,反正我是遇到了,按官方文档的说法调用键盘事件非常easy事实上: 我用了之后,不晓得为嘛,键盘就是不显示 ...