Мой вопрос почти такой же, как этот уже ответили на вопрос (Missing tkinter attributes after converting to py2exe executable). Но это относится к python 2.7, который использует Tkinter вместо tkinter.py2exe - отсутствует модуль FileDialog после компиляции исполняемого файла Tkinter gui
В основном у меня такая же проблема, когда исполнялся мой исполняемый файл после компиляции.
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
Но, как я использую Tkinter с Python 2.7 это означает, что я не могу сделать:
from tkinter import FileDialog
Я попытался с помощью
from tkFileDialog import askopenfilename
и
import tkFileDialog
но никто не работал. Я столкнулся с необходимостью обновить python до 3, чтобы иметь возможность правильно компилировать Tkinter? Или есть обходное решение, которое я пропускаю?
Это мой текущий 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']
)
Я попытался указать tkFileDialog в вариантах: включает в себя: но до сих пор не повезло :(
options={'py2exe': {'includes': ['Tkinter', 'tkFileDialog']}, }
UPDATE:
Я нашел ответ после некоторого расследования. Фактически вы можете просто
import FileDialog
UPDATE2:
Если вы хотите, чтобы избежать «неиспользуемые импорта» обратной связи некоторые отладчики и язь дадим вам, вы можете добавить пакет FileDialog словарю пакеты py2exe вместо
options={'py2exe': {'packages': ['FileDialog']},}
Возможно, кто-то может помочь выяснить, почему это более уместно?
Обновление 2 работало очень хорошо для меня. Спасибо. –