使用Nuitka编译含tkinterweb的程序时bindings模块异常
解决Nuitka打包导入tkinterweb模块的程序失败问题
- 指定完整子模块路径
bindings是tkinterweb的子模块而非独立顶层模块,直接--include-module=bindings会找不到。需指定完整路径,配合原有的tkinterweb模块包含参数,基础编译命令如下:
python -m nuitka --standalone --include-module=tkinterweb --include-module=tkinterweb.bindings your_script.py
- 用--include-package批量包含子模块
如果tkinterweb还有其他未被自动识别的子模块,直接用--include-package=tkinterweb可一次性包含整个包的所有子模块,更高效:
python -m nuitka --standalone --include-package=tkinterweb your_script.py
- 手动收集静态资源文件
tkinterweb可能附带html模板、js等非Python静态资源,Nuitka默认不会自动收集。先找到tkinterweb的安装路径:
python -c "import tkinterweb; print(tkinterweb.__path__[0])"
将输出的路径替换到下面的命令中,用--include-data-dir参数打包资源:
python -m nuitka --standalone --include-package=tkinterweb --include-data-dir=/path/to/tkinterweb=data your_script.py
这里的=data表示把原目录下的资源复制到打包后程序目录的data子目录,可根据实际需求调整路径映射。
- 验证打包结果
编译完成后进入生成的your_script.dist目录运行程序,若仍有缺失依赖,按同样方式添加对应子模块的--include-module参数即可。
内容的提问来源于stack exchange,提问作者hrh233
相关产品推荐
相关产品推荐

