在使用py2exe将程序生成exe的时候,py2exe提供了一个bundle参数,默认是3

3: don't bundle

2: bundle everything but the Python interpreter

1: bundle everything, including the Python interpreter

开始的时候,还以为bundle取值只是对最后的dist文件夹里的不同而已,而对于应用程序实际的没有任何区别,结果就是因为这个我花1天的时间调试。

 1 setup(console=["mkiso.py"],
 2       options={
 3         "py2exe":{
 4             "dll_excludes":["MSVCP90.dll, MSVCR90.dll"],
 5             'packages':['lxml'],
 6             'bundle_files': 1,
 7             }
 8       },
 9       data_files = ds,
10 )

最开始打包代码是这样的,结果总是报ImportError: MemoryLoadLibrary failed loading xapian\_xapian.pyd找了半天,都不知道问题在哪里。最后把bundle_files参数去掉,一切都没问题。

bundle_files设置成1的时候,最好把python引用的所有库都打包在library里,导致没法引用到xapian\_xapian.pyd,虽然library里确实存在,但是就是无法引用到。这里记录一下。