python - 仅当我编译我的代码时,Python“ModuleNotFoundError: No module named 'bindings'”错误
问题描述
我可以在普通的 Python IDLE 和 Visual Studio Code 上运行我的代码,但是使用相同 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
我已经安装了bindings
模块pip
。
我也是from tkinterweb import HtmlFrame
在第 40 行导入的。我该怎么办?请帮我。
解决方案
我认为这已在Github上得到解答,但我会在此处为遇到此问题并在未来某个时候偶然发现此页面的任何人添加答案。
- 升级到 TkinterWeb 和 PyInstaller 的最新版本。如果您不是最新版本,它将不起作用。
- 然后
--collect-all tkinterweb
在捆绑您的应用程序时使用该标志。例如,如果您pyinstaller --windowed yourscript.py
改用运行pyinstaller --windowed --collect-all tkinterweb yourscript.py
. 这告诉 PyInstaller 包含 TkinterWeb 文件。在许多流行的包上,这个--collect-all
命令不是必需的,因为 PyInstaller 有额外的文件(称为钩子)告诉它遇到某些包时该怎么做。PyInstaller 没有为 TkinterWeb 提供挂钩,因此您只需告诉它手动包含必要的 TkinterWeb 文件。
就这样!
推荐阅读
- python - 为什么改变我的语言在 django 上不起作用
- bash - 如何解决我的 bash 脚本中的文件结尾错误?
- sql - 在 mssql 中将 ISO 字符串转换为日期时间
- asp.net - SPA Vue.js 作为根应用程序部署到 IIS,第二个 asp.net 核心项目作为 /api
- scripting - 在 if 情况下无法比较 tcsh 中的两个变量
- laravel - Laravel 查询不适用于多个 ID
- linux - 如何在终端中更改提示
- vb.net - 禁用然后启用后日期时间选择器显示错误
- rust - 不能使用 insert() 方法
- rust - 通过暂时假装它是“静态”来伪造引用的最安全方法是什么?