Skip to main content
 首页 » 编程设计

python-2.7之py2exe之编译 Tkinter gui 可执行文件后缺少模块 FileDialog

2025年05月04日78lautakyan007

我的问题与这个已经回答的问题(Missing tkinter attributes after converting to py2exe executable)大致相同。但它与使用 Tkinter 而不是 tkinter 的 python 2.7 有关。

我在编译后运行我的可执行文件基本上遇到了同样的问题。

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 

但没有一个奏效。我是否必须将 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:

如果您想避免某些调试器和 ide 给您的“未使用导入”反馈,您可以将包 FileDialog 添加到 py2exe 的包字典中
options={'py2exe': {'packages': ['FileDialog']},} 

也许有人可以帮助澄清为什么两者都更合适?

请您参考如下方法:

不要使用“includes”,而是使用“packages”并仅指定包,在本例中为“Tkinter”。