py2exe - 编译 Tkinter gui 可执行文件后缺少模块 FileDialog
py2exe - missing module FileDialog after compiling Tkinter gui executable
我的问题与这个已经回答的问题(Missing tkinter attributes after converting to py2exe executable)非常相似。但它涉及python 2.7,它使用Tkinter,而不是tkinter。
我的可执行文件在编译后基本上遇到了同样的问题运行。
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
但是因为我在 python 2.7 中使用 Tkinter,这意味着我不能这样做:
from tkinter import FileDialog
我试过使用
from tkFileDialog import askopenfilename
和
import tkFileDialog
但 none 有效。我是否面临必须将 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']}, }
更新:
经过一番调查,我找到了答案。你实际上可以
import FileDialog
更新 2:
如果你想避免 "unused import" 某些调试器和 ide 给你的反馈,你可以将包 FileDialog 添加到 py2exe 的包字典中代替
options={'py2exe': {'packages': ['FileDialog']},}
也许有人可以帮助阐明为什么两者更合适?
而不是使用 "includes" 使用 "packages" 并且仅指定包,在本例中为 'Tkinter'.
我的问题与这个已经回答的问题(Missing tkinter attributes after converting to py2exe executable)非常相似。但它涉及python 2.7,它使用Tkinter,而不是tkinter。
我的可执行文件在编译后基本上遇到了同样的问题运行。
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
但是因为我在 python 2.7 中使用 Tkinter,这意味着我不能这样做:
from tkinter import FileDialog
我试过使用
from tkFileDialog import askopenfilename
和
import tkFileDialog
但 none 有效。我是否面临必须将 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']}, }
更新:
经过一番调查,我找到了答案。你实际上可以
import FileDialog
更新 2:
如果你想避免 "unused import" 某些调试器和 ide 给你的反馈,你可以将包 FileDialog 添加到 py2exe 的包字典中代替
options={'py2exe': {'packages': ['FileDialog']},}
也许有人可以帮助阐明为什么两者更合适?
而不是使用 "includes" 使用 "packages" 并且仅指定包,在本例中为 'Tkinter'.