我的问题与此已经回答的问题(Missing tkinter attributes after converting to py2exe executable)非常相似。但它涉及使用Tkinter而不是tkinter的python 2.7。py2exe - 编译Tkinter gui可执行文件后缺少模块FileDialog
我基本上有编译后运行我的可执行文件相同的问题。
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:
如果你想避免“未使用的导入”反馈一些调试器和IDE的给你,你可以在包的FileDialog在代替
options={'py2exe': {'packages': ['FileDialog']},}
也许有人添加到py2exe的包装词典可以帮助澄清为什么更合适?
更新2为我工作得很好。谢谢。 –