最近我用C++写的程序需要调用一个Python脚本,之前看过这方面资料无非就是调用Python的C API,我还专门研究了一番Python的C++包装库Pycxx,但都无功而返,没办法只能老老实实的用py2exe打包了:)。 上py2exe官网看了会教程,我发现还算简单,马上动手写了个setup.py:
# py2exe convert python script to exe
from distutils.core import setup
import py2exe
setup(
console=["AutoUpdate.py"],
data_files=[
(".", ["C:\Python27\msvcr90.dll", "C:\Python27\Microsoft.VC90.CRT.manifest"])
],
#zipfile="library.zip",
options={
"py2exe":{
"unbuffered":True,
"optimize":2,
"compressed":True,
"bundle_files":2,
"dist_dir":"..\"
}
}
)
其中setup函数的options的py2exe的bundle_files参数(很拗口啊)有三个值:
- 1 = 所有模块都打包进exe,最终生成单独的exe文件(需要设置zipfile=None)
- 2 = 除python27.dll外模块都打包进exe文件
- 3 = 模块都不打包进exe,会生成很多文件,这是默认 如果你有洁癖,不喜欢乱糟糟的文件的话可以考虑把bundle_files设置成1。 还有一个问题是
依赖VC动态库问题,幸好在Python安装目录下有。我现在装的是Python2.7.1,安装在C:Python27下,里面有MSVCR90.DLL(版本号9.0.21022.8)和Microsoft.VC90.CRT.manifest两个文件拷到当前目录就行了。