Python 2.7 PyInstaller:“;没有名为“Tkinter”的模块;

Python 2.7 PyInstaller:“;没有名为“Tkinter”的模块;,python-2.7,tkinter,pyinstaller,Python 2.7,Tkinter,Pyinstaller,我已经构建了一个使用Tkinter的Python(2.7)应用程序,并且正在尝试使用Pyinstaller(3.2)构建一个Windows7.exe。windows中的应用程序works find是我以python myapp.py运行的,但一旦编译成可分发的pyinstaller,我会收到以下错误消息: ImportError: No module named Tkinter 可以肯定的是,myapp.py的顶部包含: from copy import deepcopy import cPi

我已经构建了一个使用Tkinter的Python(2.7)应用程序,并且正在尝试使用Pyinstaller(3.2)构建一个Windows7.exe。windows中的应用程序works find是我以
python myapp.py
运行的,但一旦编译成可分发的pyinstaller,我会收到以下错误消息:

ImportError: No module named Tkinter
可以肯定的是,myapp.py的顶部包含:

from copy import deepcopy
import cPickle as pickle
import Tkinter as tk
from PIL import ImageTk
检查分发目录,我看到了tk85.dll、tcl85.dll和两个相关的目录,tcl/和tk/

我发现了许多对次要Tkinter依赖项的引用,例如导入Tkinter itslef的matplotlib,但我没有发现像这样的直接依赖项的任何细节

你有什么办法让它工作吗?

你检查过:(或其他问题)了吗?

引用1877版“看起来hook--u tkinter.py无法处理自定义编译的Tk。” 可能的解决方法:“谢谢,在使用yum安装安装tkinter、tix、tcl-devel和tk-devel之后,现在一切正常。”

否则,Py2exe也是创建.exe文件的一个选项,我在tkinter中使用过很多次,没有任何问题。

检查。PIL挂钩存在问题,不包括tkinter模块

一种解决方案是通过从excludedimports中删除modname\u tkinter来修改位于pythonfolder\Lib\site packages\PyInstaller\hooks中的hook文件hook-PIL.py

或者只是更改代码中导入语句的顺序。做:

from PIL import ImageTk
import Tkinter as tk

我有一个扩展到这个问题。将Tkinter包括在HiddeInputs列表中使我能够显示绘图,但无法保存它们。通过将FileDialog、tkFileDialog和tkMessageBox添加到我的规范文件中的隐藏导入中,解决了这个问题。也就是说,hiddenimports=['FileDialog','Tkinter','tkFileDialog','tkMessageBox',]


Angus

我将Python脚本转换为exe,但发现PyInstaller存在问题。试着用Cx\u Freeze来代替。这是一个没有麻烦的工作,就像一个魅力。我不知道那个。我会尝试一下,一旦我这么做了,我就会报告。我尝试了一下cx_Freeze,我离它更近了。为了避免某些包错误,我不得不加入几个排除项。然而,现在我遇到了字体问题。我使用的其中一个软件包也使用枕头和一些PIL字体。我已经找到了软件包中字体的存储位置,但无法设置这些字体。我将它们直接复制到build/exe目录,但没有成功。我也看到了cx_Freeze文档中关于包含数据文件的部分,但我不确定如何实现这一点,我还没有看到。我没有使用自定义版本,但我将尝试安装其他软件包。我将尝试一下,并在这里报告。不幸的是,我发现我已经安装了所有这些软件包。我还尝试了py2exe,发现我必须添加一些DLL排除项(numpy-atlas.DLL和MSVCP90.DLL)。编译后,它失败了,许多日志条目说“ImportError:numpy.core.multiarray导入失败”。我已经搜索了解决方案,但没有找到解决方案。很好的解决方案。请注意,使用Tkinter import*中的
更改导入顺序不起作用,但如上所述,可以轻松解决此问题。