Moje pytanie jest bardzo podobne do tego, na które już udzielono odpowiedzi (Missing tkinter attributes after converting to py2exe executable). Ale dotyczy on python 2.7, który używa Tkintera, zamiast tkintera.py2exe - brakujący moduł FileDialog po skompilowaniu pliku wykonywalnego GUI Tkinter
Zasadniczo mam ten sam problem z uruchomieniem mojego pliku wykonywalnego po kompilacji.
Traceback (most recent call last):
File "main.py", line 5, in <module>
File "gui.pyc", line 5, in <module>
File "matplotlib\backends\backend_tkagg.pyc", line 7, in <module>
File "six.pyc", line 199, in load_module
File "six.pyc", line 113, in _resolve
File "six.pyc", line 80, in _import_module
ImportError: No module named FileDialog
Ale jak Używam Tkinter z Pythona 2.7, oznacza to, że nie można zrobić:
from tkinter import FileDialog
Próbowałem, używając
from tkFileDialog import askopenfilename
i
import tkFileDialog
ale żaden nie zadziałał. Czy mam do czynienia z uaktualnieniem Pythona do 3, aby móc poprawnie skompilować Tkintera? Czy istnieje obejście, którego mi brakuje?
To jest mój obecny setup.py
from distutils.core import setup
from glob import glob
import py2exe
import sys
import matplotlib
sys.path.append("C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\redist\\x86\\Microsoft.VC90.CRT")
data_files = [("Microsoft.VC90.CRT",
glob(r'C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\x86\Microsoft.VC90.CRT\*.*'))]
data_files.extend(matplotlib.get_py2exe_datafiles())
setup(
data_files=data_files,
windows=['main.py'],
packages=[''],
name='ZLA',
version='0.1 beta',
description='Troubleshooter.',
requires=['matplotlib', 'PIL', 'py2exe']
)
Próbowałem określić tkFileDialog w opcji: obejmuje: ale nadal nie szczęścia :(
options={'py2exe': {'includes': ['Tkinter', 'tkFileDialog']}, }
UPDATE:
znalazłem odpowiedź po pewnym dochodzeniu.Tak właściwie można
import FileDialog
Update2:
Jeśli chcesz uniknąć „niewykorzystana przywóz” feedback kilka debugery i IDE daje, można dodać pakiet FileDialog do słownika pakiety py2exe zamiast
options={'py2exe': {'packages': ['FileDialog']},}
Może ktoś może pomóc wyjaśnić, dlaczego jeden z nich jest bardziej odpowiedni?
Aktualizacja 2 sprawdziła się bardzo dobrze. Dziękuję Ci. –