pyInstaller后出现 ImportError: No module named 'tkinter' 的错误

4
我想要创建一个可执行文件,但每次运行.exe文件时都会显示“ImportError:找不到模块'tkinter'”,而且我在Stackoverflow上读到的所有内容都没有帮助我解决问题!
我的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 备注 : 我今天已经三次卸载/安装了Python(在国内和国外的文档上都看过)。 备注2 : 我只是用Python来解决科学问题。我不是计算机专家,所以请对我解释计算机方面的东西时要友善一些 :S

编辑(因为我不能编辑我的帖子-_-):实际上,命令行是pyinstaller -F prog.py - John
matplotlib 使用 tkinter 来显示带有图形的窗口。 - furas
尝试 import tkinter,也许它会分配 tkinter 模块。或者在运行 pyinstaller 之前阅读如何设置配置。tkinter 使用外部的 dll,语言为 tcl,其 GUI 为 tk,因此您可能需要手动添加有关 tcl.dlltk.dll 的配置信息(我不使用 Windows,因此我不知道是否是 tcl.dlltk.dll)。 - furas
做了那个,但是导入tkinter时结果一样 :( - John
可能是PyInstaller - no module named的重复问题。 - user1251007
3个回答

4

终于成功了,使用pyinstaller -F --hidden-import=tkinter --hidden-import=tkinter.filedialog prog.py命令。非常感谢!!!


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

2
问题在于pyinstaller看不到二级导入。所以如果你导入模块A,pyinstaller会看到这个。但是在A中导入的任何其他模块都不会被看到。
在你的python脚本中不需要做任何更改。你可以直接将缺失的导入添加到规范文件(在你的情况下为prog.spec)中。 只需更改以下行:
hiddenimports=[],

hiddenimports=["tkinter"],

之后运行 pyinstaller prog.spec 来创建 prog.exe


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接