Python下打包工具很多,使用比较多的是py2exe,我使用Python32,好像py2exe并不支持。看了看cxfreeze,可以支持python32.
首先编写一个setup.py:
import sys
from cx_Freeze import setup, Executable
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup(
name = "PyMailServer",
version = "0.1",
description = "PyMailServer",
executables = [Executable("PyMailServer.py", base = base)])
然后在命令行中运行:
Python setup.py build
之后就会在build目录下生成windows下的可执行文件了。
注意的是,我使用的是ActivePython32,这个包中adoapi有点问题,需要修改(博客有记录),好像pywin32也有问题,如果程序中使用了相关的模块,在打包时会报告错误,我重新下载pywin32安装后可以正常编译了。
另:
如果编译好的程序执行时路径中含有中文,则程序会报告错误:cannot get zipimporter instance,只需要修改路径不含中文即可。不知道有什么解决办法。
这个bug好像已提交,等下个版本修复吧:
http://comments.gmane.org/gmane.comp.python.cx-freeze.user/678