2013-02-20 64 views
12

我試圖使用提供了這個鏈接,薄荷的解決方案,爲我的基於TKinter節目單exe文件創建一個EXE:使用py2exe對的Tkinter程序

py2exe - generate single executable file

這是我在寫在setup.py:

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

sys.argv.append('py2exe') 

setup(windows=[{'script': 'filename.py'}], \ 
      options={"py2exe": {"includes": ["decimal", "Tkinter", \ 
      "tkFileDialog", "csv", "xml.dom.minidom", "os"], \ 
      'bundle_files': 1, 'compressed': False}}, \ 
      zipfile = None) 

它爲Tkinter的東西了「TCL」文件夾,即使我已指定bundle_files = 1,再加上它也產生了一些其他的EXE w9xpopen.exe。然而,我的實際exe文件不運行,也不會給出任何錯誤。如果我刪除所有這些內容,它甚至不起作用。

對我在這裏可能會錯過的任何想法?我正在開發一款64位Windows 7機器。

+0

它沒有'bundle_files'嗎? – 2013-02-20 08:12:57

+0

它的確如此,但我打算將所有內容都捆綁到一個exe文件中。 bundle_files = 3正常工作。 – 2013-02-20 09:06:53

+0

一些帖子指出bundle_files 1&2不能與64位系統一起使用... – charo 2016-12-09 05:31:59

回答

10

感謝this link,你必須編輯site-packages/py2exe/build_exe.py並添加"tcl85.dll""tk85.dll"dlls_in_exedir列表。這將讓它運行,雖然你仍然有tcl文件夾,並且這兩個DLL將在exe文件的旁邊。但它比bundle_files=3好。

 self.dlls_in_exedir = [python_dll, 
           "w9xpopen%s.exe" % (is_debug_build and "_d" or ""), 
           "msvcr71%s.dll" % (is_debug_build and "d" or ""), 
           "tcl85.dll", 
           "tk85.dll"]