pyinstaller后不能运行的问题处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyinstaller后不能运行的问题处理相关的知识,希望对你有一定的参考价值。
参考技术A 有时候将.py文件打包成.exe文件后,不一定能够正常运行。但是点.exe后程序一闪而退,就不知道问题出在哪里?从上图中,可以看出由于文件找不到导致程序出错。
从这里也可以大致了解下pyinstaller成可执行程序的流程是:
会将exe解压到系统某处(图中为AppData/Local/Temp下),然后解释执行。
https://gist.github.com/GaryLee/d191f239acf2f47bec93
在工程下创建 hook-jsonrpcclient.py
然后使用如下命令打包:
[参考]
https://pythonhosted.org/PyInstaller/spec-files.html#adding-data-files
https://pyinstaller.readthedocs.io/en/stable/usage.html
https://pythonhosted.org/PyInstaller/hooks.html
Python 脚本在定期运行时工作正常,但在使用 PyInstaller 编译时不能正常运行
【中文标题】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 文件夹,因为我在代码中使用相对路径,新文件夹试图从不存在的内容中提取。
【讨论】:
以上是关于pyinstaller后不能运行的问题处理的主要内容,如果未能解决你的问题,请参考以下文章
Pyinstaller打包配置UPX缩小程序包大小,打包时出现UPX is not available处理方法
Pyinstaller打包配置UPX缩小程序包大小,打包时出现UPX is not available处理方法