【问题标题】:Pyinstaller, .py version works, .exe "No module named Tkinter"?Pyinstaller,.py 版本有效,.exe “没有名为 Tkinter 的模块”?
【发布时间】:2016-12-13 11:59:19
【问题描述】:

我不明白这是怎么发生的。 myscript.py 有效,Tkinter 已安装。但是,一旦我使用 pyinstaller 将其转换为 .exe,我运行了 myscript.exe,我在命令提示符中收到一条消息,提示“没有名为 Tkinter 的模块”。

我该如何解决这个问题? 我已经尝试过多次转换,尝试过使用 --noupx,还尝试过重新安装 pyinstaller。谢谢

【问题讨论】:

标签: python tkinter pyinstaller


【解决方案1】:

PyInstaller - 隐藏导入

尝试使用--hiddenimport 标志。执行--hiddenimport=Tkinter,或将Tkinter 替换为您需要的任何模块。这个问题似乎在 PyInstaller 社区中再次出现。 Here is one article

命名空间

Tkinter 已将其命名空间从 Python 2 更改为 Python 3。它现在在 Python 3 中命名为 tkinter,在 Python 2 中命名为 Tkinter。这是我喜欢使用的代码,因此它是跨版本的。

try:
  import Tkinter as tk
except ImportError:
  import tkinter as tk

然后您可以将 Tkinter 引用为tk。或者,如果您使用from Tkinter import *,您可以使用没有命名空间的所有内容。请参阅列表here 了解更多版本之间的名称更改。

【讨论】:

  • 谢谢,但我不认为这是脚本工作的问题,当我尝试将其转换为 .exe 时会出现问题
  • 做了一些编辑,大多数人似乎都在使用 PyInstaller 出现这个问题。 PyInstaller GitHub 上有几篇关于这个的文章。