ImportError:pyInstaller 后没有名为“tkinter”的模块

Posted

技术标签:

【中文标题】ImportError:pyInstaller 后没有名为“tkinter”的模块【英文标题】:ImportError: No module named 'tkinter' after pyInstaller 【发布时间】:2016-12-19 18:39:05 【问题描述】:

我想做一个可执行文件,但每次运行 .exe 时它都会写入ImportError: No module named 'tkinter',而我在 Stackowerflow 上阅读的所有内容都对我没有帮助!

我的 python 程序很简单(ODE 求解器)并且只请求:

from math import*
from pylab import*
import numpy as np

import matplotlib
import numpy as np
import matplotlib.pyplot as plt

我将prog.py 的副本粘贴到pyInstaller 所在的C:\Python\Scripts 文件夹中。我计算命令行pyinstaller -F eulersolver.py,这会在dist 文件夹中创建一个prog.exe。当我运行这段代码时,我有

ImportError: No module named 'tkinter'
Failed to execute script prog

但是我的程序没有用到这个模块……你有什么建议或者帮助吗?

操作系统: Windows64

Python: 3.5 for Win64

注意:我今天已经卸载/安装了 3 次 python(在阅读了本网站和国外的文档之后)。

注意 2: 我仅将 Python 用于科学问题。我不是计算机科学家,所以在解释计算机的东西时请善待我:S

【问题讨论】:

EDIT(因为我无法编辑自己的帖子-_-):命令行实际上是pyinstaller -F prog.py matplotlib 使用tkinter 显示带有绘图的窗口。 尝试import tkinter 也许它也会分配 tkinter 模块。或者在运行pyinstaller 之前阅读如何设置配置。 tkinter 使用外部 dll 和语言 tcl 及其 gui tk 所以也许你必须手动添加有关 tcl.dlltk.dll 的配置信息(我不使用 Windows,所以我不知道如果是tcl.dlltk.dll) 做到了,但导入 tkinter 时结果相同 :( PyInstaller - no module named的可能重复 【参考方案1】:

您应该使用隐藏导入pyinstaller eulersolver.py --hidden-import=tkinter -y

【讨论】:

【参考方案2】:

终于为pyinstaller -F --hidden-import=tkinter --hidden-import=tkinter.filedialog prog.py工作了,非常感谢!!!

【讨论】:

【参考方案3】:

问题是 pyinstaller 不会看到 二级导入。因此,如果您导入模块 A,pyinstaller 会看到这一点。但是在 A 中导入的任何附加模块都不会被看到。

无需更改您的 python 脚本中的任何内容。您可以直接将缺少的导入添加到 spec 文件(在您的情况下为 prog.spec)。 只需更改以下行:

hiddenimports=[],

hiddenimports=["tkinter"],

然后运行pyinstaller prog.spec 以创建prog.exe

【讨论】:

以上是关于ImportError:pyInstaller 后没有名为“tkinter”的模块的主要内容,如果未能解决你的问题,请参考以下文章

ImportError: No module named 'xlsxwriter' - 当我使用 Pyinstaller 打包程序时

Pyinstaller 不工作 - ImportError: Module 'pywintypes' is not in freeze sys.path

ImportError: numpy.core.multiarray failed to import [cv2, matplotlib, PyTorch, pyinstaller ]

ImportError: numpy.core.multiarray failed to import [cv2, matplotlib, PyTorch, pyinstaller ]

Pyinstaller ImportError:DLL加载失败:找不到指定的模块

PyInstaller 与 Python:3.10.0b4 - ImportError:没有名为 _bootlocale 的模块