Python "ModuleNotFoundError: No module named 'bindings'" error only when I compile my code

Python "ModuleNotFoundError: No module named 'bindings'" error only when I compile my code

我可以 运行 我的代码在普通 Python IDLE 和 Visual Studio 代码上,但是使用相同 Python 安装的 pyinstaller 编译的可执行文件给出了这个错误:

Traceback (most recent call last):
  File "MyApp.py", line 40, in <module>
  File "PyInstaller\loader\pyimod03_importers.py", line 540, in exec_module
  File "tkinterweb\__init__.py", line 30, in <module>
ModuleNotFoundError: No module named 'bindings'
[4712] Failed to execute script MyApp

我已经通过 pip 安装了 bindings 模块。

我也在第 40 行导入了 from tkinterweb import HtmlFrame。我该怎么办?请帮助我。

我认为这已在 Github 上得到解答,但我会在此处添加答案,以供遇到此问题并在未来某个时候偶然浏览此页面的任何人使用。

  1. 升级到最新版本的 TkinterWeb 和 PyInstaller。如果您不是最新版本,它将无法使用。
  2. 然后在捆绑您的应用时使用 --collect-all tkinterweb 标记。例如,如果您使用 pyinstaller --windowed yourscript.py 而不是 运行 pyinstaller --windowed --collect-all tkinterweb yourscript.py。这告诉 PyInstaller 包含 TkinterWeb 文件。在许多流行的包上,这个 --collect-all 命令不是必需的,因为 PyInstaller 有额外的文件(称为挂钩)告诉它在遇到某些包时该怎么做。 PyInstaller 没有为 TkinterWeb 提供挂钩,因此您只需告诉它手动包含必要的 TkinterWeb 文件即可。

就这些了!