让py2exe包含我的数据文件(如include_package_data)
我有一个用Python写的应用程序,它的一些子包里包含了非Python的数据文件。我在我的setup.py
文件中使用了include_package_data
这个选项,这样在打包的时候就能自动把这些文件都包含进来,效果很好。
现在我开始使用py2exe这个工具。我原本以为它会识别到我设置了include_package_data=True
,然后把所有的文件都包含进去。但实际上并没有,它只把我的Python文件放进了library.zip
里,这样我的应用程序就无法正常工作了。
我该怎么做才能让py2exe把我的数据文件也包含进去呢?
4 个回答
3
这是我用来让py2exe把我所有的文件打包成.zip文件的方法。需要注意的是,要访问你的数据文件,你得先打开这个zip文件。py2exe不会自动帮你处理这些调用。
setup(windows=[target],
name="myappname",
data_files = [('', ['data1.dat', 'data2.dat'])],
options = {'py2exe': {
"optimize": 2,
"bundle_files": 2, # This tells py2exe to bundle everything
}},
)
py2exe的所有选项完整列表可以在这里找到。
6
我最后通过给py2exe设置一个选项skip_archive=True
来解决了这个问题。这个选项让它把Python文件放在了普通文件夹里,而不是放在library.zip
这个压缩包里。然后我使用data_files
把数据文件直接放进了Python包里。