在使用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里确实存在,但是就是无法引用到。这里记录一下。