1,命令行窗口程序创建-----setup_for_Console.py代码如下

from distutils.core import setup

import py2exe
setup(console=["d://pythonTest//StandardDialog.py"])

2,(pyqt4窗口程序创建方法)Gui窗口程序创建----setup_for_windows代码如下

from distutils.core import setup
import py2exe
import sys

#this allows to run it with a simple double click.
sys.argv.append('py2exe')

py2exe_options={
    "includes":["sip"],   #选项中“includes”是需要包含的文件,这里的”sip”是PyQt程序打包时需要添加的,如果不是PyQt程序不需要此项。
    "dll_excludes":["MSVCP90.dll",],  #dll_excludes”是需要排除的dll文件,这里的”MSVCP90.dll”文件,如果不排除的话会报error: MSVCP90.dll: No such file or directory错误。
    "compressed":1,  #compressed”为1,则压缩文件。  "optimize":2,  #optimize”为优化级别,默认为0。
    "ascii":0,    #ascii”指不自动包含encodings和codecs。
    "bundle_files":1,  #bundle_files”是指将程序打包成单文件(此时除了exe文件外,还会生成一个zip文件。如果不需要zip文件,还需要设置zipfile = None)。1表示pyd和dll文件会被#打包到单文件中,且不能从文件系统中加载python模块;值为2表示pyd和dll文件会被打包到单文件中,但是可以从文件系统中加载python模块。64位的Py2exe不要添加本句。
}
setup(
    name="PyQt Demo",
    version='1.0',  #注意,windows = ['pyqtdemo.py',],这里使用的是windows,即没有命令行窗口出现,如果使用console则表示有命令行窗口出现。
    windows=['StandardDialog.py',],  #这里是同目录下要生成的程序主文件名 
    zipfile=None,
    options={'py2exe':py2exe_options}  
    )

---总结:

1,不管是生成命令行窗口程序,还是生成gui窗口程序,执行该文件,都会得到一个build文件夹和一个dist文件夹。其中,dist文件夹,就是你得到的打包程序。

2,如果按照上述代码执行成功,则应该dist文件夹中,只包括程序的exe文件和w9xpopen.exe。w9xpopen.exe是针对windows9x版本的,一般来说该文件并不需要。

3,如果bundle_files不为1、2,则dist文件夹中还会包括一些dll文件和pyd文件(Python Dll文件)。如果bundle_files为2,dist文件夹会包括一个python##.dll文件,如果为1则不会。

4,如果没有使用zipfile=None,还会生成一个library.zip文件。

5,在xp下运行pyqt4程序时,不管是生成单文件,还是多个文件,都要在程序目录下加入msvcp90.dll和Microsoft.VC90.CRT.manifest和msvcr90.dll文件,才可以运行,否则报错。

6,注意,拷贝文章中代码时,一定要做格式整理,因为格式乱了,不整理,执行时,就会报错。

 

---生成程序时常见问题:

1,error: MSVCP90.dll: No such file or directory

解决方法,按如上程序,将该dll写入dll_excludes中。

在其他电脑如果无法运行,可能是由于该电脑中没有安装Microsoft Visual C++ 2008 Redistributable - x86造成的,请到微软官网上下载安装该程序,或将MSVCP90.dll放入dist文件夹(注意:方法未验证)。

2,error: bundle-files 1 not yet supported on win64

对于64位的Py2exe而言,bundle_files选项目前仍不可用,无法生成为单文件。

3, 图标等不显示

网上的一种说法是这是Py2exe打包时没有将其打包进来造成的,可以将“Python\Lib\site-packages\PyQt4 \plugins\imageformats”文件夹复制到dist目录下,再执行打包脚本。不过我在实验的过程中并没有发现这个问题。

当然,一定要注意,把你图标按照程序中写的位置放入到dist目录下。否则,当然不会显示。

4, 执行程序有命令行的黑框

将setup函数中的console改为windows。

5,弹出一个日志保存的对话框错误?因为没有拷贝msvcp90.dll到程序目录下。

6,弹出应用程序配置不正确,应用程序未能启动错误?没有拷贝Microsoft.VC90.CRT.manifest和msvcr90.dll文件到程序目录下。