随便拉了个学习时用的测试程序来做的实例,原程序如下:
#Filename:for.py
count=0
for i in range(1,100,2):
count+=i
else:
print 'that\'s over'
print count
raw_input("input Enter to quit:")
下面是给程序写的py2exe脚本:
#name:mysetup.py
from distutils.core import setup
import py2exe
setup(version='1.0',
description='for test',
name='fortest',
options = {"py2exe": {"compressed": 1,"optimize": 2,"ascii": 0,"bundle_files": 1}},
zipfile=None,
console=[{"script":"for.py", "icon_resources": [(0, "mr.ico")]}])
写完生成脚本,建议保存在程序的相同目录,然后cd到此目录下运行命令:
python mysetup.py py2exe
就会在此目录下生成一个dist目录和一个build目录,dist目录下的for.exe就是生成的可执行文件,旁边还有一个w9xpopen.exe的文件,明显是用来在win9x下运行用的( xp还有两个月的支持期,更不要说win9x了),这个文件可以直接删了。
生成的文件有3.3M确实有点大,不过还是可以接受的,不知道项目大了,会不会变得太大,生成单文件的主要的参数就是"bundle_files": 1,还有zipfile=None,bundle_files值为1表示pyd和dll文件会被打包到exe文件中,且不能从文件系统中加载python模块;值为2表示pyd和dll文件会被打包到exe文件中,但是可以从文件系统中加载python模块。另外setup中使用zipfile=None可以不生成library.zip.
console=[{"script":"for.py", "icon_resources": [(0, "mr.ico")]}])
图标这句[(0, "mr.ico")要看具体的情况,如果.ico里只有一个图标就直接用0,有些ico里有3个图标,就可以用1,2,刚才直接抄人家代码来写了个1,结果没有图标。