2013-05-02 96 views
1

我有一個讀取大型字典文件的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文件內置到可執行文件中?

感謝您的任何幫助。

回答

2

把它作爲一個字符串放到一個Python文件中實際上是事情最常做的方式。例如,如果你看一下PyQt resource system的例子,你會發現它們在一些Python文件中嵌入了任何資源(圖像,聲音等)作爲巨大的字節字符串,之後你不應該修改它們。

只要製作一個單獨的Python文件resources.py或類似的東西,如果你想保持你的代碼乾淨。然後從該文件導入變量。

+0

感謝您的快速回復。對此,一定沒有更好的解決方案。那麼我會按照你的建議。 – foresightyj 2013-05-02 10:00:43

+2

可能有'py2exe'的解決方案。但反正它不會那麼簡單。例如,[看看這個問題](http://stackoverflow.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