首页 > 技术文章 > py2exe 生成带图标的单个文件实例

sprite 2014-02-08 23:56 原文

随便拉了个学习时用的测试程序来做的实例,原程序如下:

#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,结果没有图标。

推荐阅读