2013-02-20 22 views
12

Próbuję użyć rozwiązanie Minty za dostarczone na ten link, aby wygenerować jeden plik exe dla mojego programu opartego Tkinter:Tworzenie pojedynczego EXE przy użyciu py2exe dla programu Tkinter

py2exe - generate single executable file

Oto co napisałem w 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) 

tworzy 'tcl' folder Tkinter rzeczy mimo że określono bundle_files = 1 Plus to również generuje jakieś inne exe w9xpopen.exe. Mój aktualny exe nie działa, ale nie daje też żadnych błędów. To nawet nie działa, jeśli usunę wszystkie te załączniki.

Jakieś myśli o tym, czego mógłbym tu nie zauważyć? Pracuję na 64-bitowym komputerze z systemem Windows 7.

+0

Czy działa bez 'bundle_files'? –

+0

To działa w ten sposób, ale zamierzam połączyć wszystko w jeden plik exe. bundle_files = 3 działa poprawnie. –

+0

niektóre posty wskazują, że bundle_files 1 i 2 nie działają z systemem 64-bitowym ... – charo

Odpowiedz

10

Dzięki this link, trzeba edytować site-packages/py2exe/build_exe.py i dodać "tcl85.dll" i "tk85.dll" do listy dlls_in_exedir. To sprawi, że uruchomi się, chociaż nadal będziesz mieć foldery tcl, a te dwa pliki DLL będą tam obok exe. Ale jest o wiele lepszy niż 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"] 
Powiązane problemy