将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文件,打开这个文件,我们发现其内容为:

view plaincopy to clipboardprint?

  1. import sys  
  2. from cx_Freeze import setup, Executable  
  3. base = None  
  4. if sys.platform == "win32":  
  5.     base = "Win32GUI"  
  6. setup(  
  7.         name = "simple_PyQt4",  
  8.         version = "0.1",  
  9.         description = "Sample cx_Freeze PyQt4 script",  
  10.         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,这个到目前为止还没有找到好的解决方法

时间: 2024-12-02 09:49:36

将python3.1+pyqt4打包成exe的相关文章

Windows下用py2exe将Python程序打包成exe程序的教程_python

py2exe在sourceforge 的下载只支持到2.7. 针对python3.0+的版本,需要自己编译.1.下载源码 svn checkout svn://svn.code.sf.net/p/py2exe/svn/trunk py2exe-svn2.编译环境 这里使用的是vs2014.3.安装 进入py2exe-3 python setup.py install 这里会进行编译.安装. 此外,python默认使用的是vs9,针对vs2014,需要改下文件: 复制代码 代码如下: Lib\di

新手提问大神,java源代码写好后该怎么用,打包成exe?还是有别的更好的方法

问题描述 新手提问大神,java源代码写好后该怎么用,打包成exe?还是有别的更好的方法 有开发经验的大神告诉我,java源代码写好后该怎么用,打包成exe?还是有别的更好的方法,有的提到了脚本之类的 解决方案 点进去看看,试着去用用http://jingyan.baidu.com/article/358570f6727bb7ce4724fc88.html 解决方案二: 点进去看看,试着去用用http://jingyan.baidu.com/article/358570f6727bb7ce472

java-于Java的servlet服务端项目如何打包成exe文件运行在服务器上。

问题描述 于Java的servlet服务端项目如何打包成exe文件运行在服务器上. 求大神帮忙啊,开发了一个手机app的客户端和服务器端,客户端可以打包成一个apk直接在手机上安装,请问服务器端的servlet可不可以也这样,具体怎么做 解决方案 直接把工程放在服务器webapp下面 解决方案二: 你先用一个tomcat吧项目部署好,tomcat内部文件夹放置好jre,然后修改startup.bat配置成直接访问这个jre,你的项目放到放到webapps上,调试通过: 然后下载一个exe打包工具

利用Advanced Installer将asp.netMVC连同IIS服务和mysql数据库一块打包成exe安装包

原文:利用Advanced Installer将asp.netMVC连同IIS服务和mysql数据库一块打包成exe安装包 因为业务需要,项目中需要把asp.netmvc项目打包成exe安装程序给客户,让客户直接可以点下一步下一步安装部署web程序,并且同时要将IIS服务和mysql一同安装到服务器上,因为客户的电脑可能是64位也可能是32位,所以在打包的时候就需要打包成两份安装包.研究了几天终于有所收获,下边就是打包的步骤. 打包步骤: 一.前期准备 1.将asp.netmvc发布到本地目录中

如何把Java项目打包成exe文件

问题描述 我在使用exe4j把Java项目打包成exe的时候,最后出现错误了,不能把oracle的驱动jar包加进去,不知道怎么弄了.在Java项目中,我已经把oracle的jar包放在项目中的lib下,并在项目中引用了,但是在转换的时候,驱动jar包总是不能添加到exe文件中,JRE环境的文件都能添加到里面 解决方案 解决方案二:你百度,,,我见过那种方法!解决方案三:不要exe了,用java或javaw调用jar里的入口类,将命令行写成批处理,win下用bat,linux下用.hexe文件无

VS2012的Windows Service程序打包成exe后安装,但是在进程管理中找不到这个服务,是怎么回事呢???求高手帮忙解决,谢谢!!在线等……

问题描述 VS2012的WindowsService程序打包成exe后安装,但是在进程管理中找不到这个服务,是怎么回事呢???求高手帮忙解决,谢谢!!在线等-- 解决方案 解决方案二:windowsservice安装过程中,不光是复制可执行文件,很关键的一步是需要自定义的,就是注册服务,并且启动服务.注册要用到installutil,启动就用netstartxxxxxx解决方案三:我是用这种方法配置打包的,以前有个项目也是按这种方法配置打包成功运行没有问题,不知道这次是怎么回事http://bl

使用exe4j对我导出的jar文件打包成exe,为什么找不到main class

问题描述 使用exe4j对我导出的jar文件打包成exe,为什么找不到main class 贴图: 解决方案 将jar打包成exe文件利用exe4j将jar打包成exe文件

jar-为什么要将java程序JAR包打包成.EXE,作用是什么

问题描述 为什么要将java程序JAR包打包成.EXE,作用是什么 如题.jar包不是已经能运行了吗,为何还要打包成.EXE呢,求真解,意义何在? 解决方案 JAR包不能单独运行的,它只是将一些函数封装下,提供给其它工程使用,要依托java.EXE是可以单独运行的,不用依托java 解决方案二: Java程序打包成Jar包Java程序打包成jar包Java程序打包成jar包 解决方案三: http://blog.chinaunix.net/uid-26153556-id-3042913.html

node-webkit打包成exe文件被360误报木马的解决方法_node.js

最近项目需要用到node-webkit.处理古老级用户的兼容以及他们心里的'数据安全'问题. 1.下载完node-webkit 2.制作appName.nw文件 3.copy /b nw.exe+appName.nw  TestAppName.exe 到目前为止,目录下生成了TestAppName.exe文件 ,双击运行很完美. 但,直接将TestAppName.exe换个目录,却打不开. google+百度的解决方案:使用Enigma Virtual Box工具,打包成exe文件.(Enigm