如何使用py2exe将文本文件嵌入到单个可执行文件

问题描述:

我有一个读取大型字典文件的python脚本,该文件存储为.txt文件。现在我想用py2exe制作一个可执行文件。目前,我的设置是这样的:如何使用py2exe将文本文件嵌入到单个可执行文件

from distutils.core import setup 
import py2exe, sys, os 

sys.argv.append('py2exe') 

Mydata_files = [('.', ['dict_lookup.txt'])] 


setup(console=['BladeHost.pyw'], 
    options = { 
    "py2exe": { 
     'bundle_files': 1, #with this == 1, I have the weird CreateActCtx error msg 
     'compressed': True, 
     "dll_excludes": ["MSVCP90.dll", "gdiplus.dll"], 

     } 
    }, 
    zipfile = None, 
    data_files=Mydata_files, 
) 

这个设置给我的可执行文件,并在dist文件夹中的dict_lookup.txt。但是,我不希望这个愚蠢的.txt文件在可执行文件之外。我知道我将这个文本文件复制并粘贴到python脚本中的一个长字符串中,但这会使我的python脚本变得丑陋。

所以我的问题是,有没有办法设置py2exe,以便这个.txt文件内置到可执行文件中?

感谢您的任何帮助。

把它作为一个字符串放到一个Python文件中实际上是事情最常做的方式。例如,如果你看一下PyQt resource system的例子,你会发现它们在一些Python文件中嵌入了任何资源(图像,声音等)作为巨大的字节字符串,之后你不应该修改它们。

只要制作一个单独的Python文件resources.py或类似的东西,如果你想保持你的代码干净。然后从该文件导入变量。

+0

感谢您的快速回复。对此,一定没有更好的解决方案。那么我会按照你的建议。 – foresightyj 2013-05-02 10:00:43

+2

可能有'py2exe'的解决方案。但反正它不会那么简单。例如,[看看这个问题](http://*.com/questions/1939883/py2exe-embed-static-files-in-exe-file-itself-and-access-them)。 – Morwenn 2013-05-02 10:02:48

+1

再次感谢。我在该线程中使用了Darren的解决方案,结果非常好。多么好的解决方案! – foresightyj 2013-05-03 08:07:17