Python 脚本在定期运行时工作正常,但在使用 PyInstaller 编译时不能正常运行
Posted
技术标签:
【中文标题】Python 脚本在定期运行时工作正常,但在使用 PyInstaller 编译时不能正常运行【英文标题】:Python script works fine when run regularly, but not when compiled with PyInstaller 【发布时间】:2019-01-28 15:50:55 【问题描述】:我有一个脚本可以生成一个根据某些按钮进行更改的 UI。 当我独立运行我的脚本时,它从头到尾都运行良好。
问题是,当我使用 PyInstaller 编译它时(我不使用一个文件或窗口),GUI 在抛出此错误时中断:
invalid command name "1940661235784UpdateUI"
while executing
"1940661235784UpdateUI"
("after" script)
at load function
Exception in Tkinter callback
Traceback (most recent call last):
File "tkinter\__init__.py", line 1705, in __call__
File "UserInputs.py", line 614, in <lambda>
File "UserInputs.py", line 921, in ShowLoadMenu
IndexError: list index out of range
如果此代码在 pyinstaller 之前有效,那么可能导致这种不一致行为的原因是什么?
【问题讨论】:
我在pyinstaller
Supported packages 的支持包列表中没有看到tkinter
我也看到了,但它确实支持 tkinter。发现问题在于,由于它在新目录中编译,因此没有使用我在代码中编写的相对路径。改变它修复它。
【参考方案1】:
PyInstaller 编译到包含所有依赖项的 dist 文件夹,因为我在代码中使用相对路径,新文件夹试图从不存在的内容中提取。
【讨论】:
以上是关于Python 脚本在定期运行时工作正常,但在使用 PyInstaller 编译时不能正常运行的主要内容,如果未能解决你的问题,请参考以下文章
直接或从 Makefile 执行 Python 程序时未找到模块,但在使用“python”运行时工作正常
使用 Shell 脚本定期检查 MySQL 服务是否正常运行
使用 Shell 脚本定期检查 MySQL 服务是否正常运行