[√]pyinstaller打包的exe运行报错,找不到库

简介: [√]pyinstaller打包的exe运行报错,找不到库

PyInstaller 是一个用于将 Python 程序打包成独立可执行文件的工具。

使用 PyInstaller 可以将 Python 脚本及其所有依赖项(包括第三方库和资源文件)打包到一个单个的可执行文件中,这样用户就不需要安装 Python 解释器或其他依赖项即可运行该程序。

PyInstaller 支持跨平台,并可以在 Windows、macOS 和 Linux 上进行打包。它能将 Python 程序打包为原生的可执行文件(如EXE、APP或ELF),从而实现了更好的用户体验和便携性。

pyinstaller之后报错

Traceback (most recent call last):
  File "generator.py", line 1574, in <module>
    main()
  File "generator.py", line 1569, in main
    generator.generate_code()
  File "generator.py", line 1204, in generate_code
   顶层逻辑
    layout_h = Template(file=os.path.join(self.target, "templates", "layout_head.h"), searchList=[self])
  File "site-packages\Cheetah\Template.py", line 1259, in __init__
  File "site-packages\Cheetah\Template.py", line 1553, in _compile
  File "site-packages\Cheetah\Template.py", line 788, in compile
  看到它会拼接一个文件,这个路径是以_分割,目录很明显不是exe的
  File "_proj_cocos_binding_static_targets_lua_templates_layout_head_h.py", line 21, in <module>
ImportError: No module named DummyTransaction

在调用栈中发现路径分隔符有异常

H:\\proj\\cocos-binding/static\\targets\\lua
               ↑ 这里的横杠转换出现了问题
    _proj_cocos_binding_static_targets_lua

但是底层Template在处理的时候会正确转换路径分隔符

image.png

问题出在这个convertTmplPathToModuleName函数

image.png

折腾了一圈,发现好像跟这个路径分隔符没有关系,因为我这本地正常的版本也是这个转换逻辑,这里只是为了防止出现特殊字符串

原因

报错提示的代码好像是临时生成的,所以报错后我一直在本机找不到这个文件。

报错的21行代码为

LOAD_CONST(-1), LOAD_CONST(('*',)), IMPORT_NAME(Cheetah.DummyTransaction), IMPORT_STAR

这个报错也就对上了,的确是有这个文件,需要确认下pyinstaller之后是否有这个文件

image.png

解包之后发现还真的就没有Cheet.DummyTransaction这个文件

image.png

感觉是pyinstaller的问题,我使用的pyinstaller版本是3.6,看了文档--hidden-import可以强制将某些lib打包进去,

--hidden-import Cheetah

发现这样没有任何效果,exe运行仍旧提示找不到DummyTransaction模块,解包后的确还是没有,文档上也没有说的更清楚,抱着试试看的态度

--hidden-import Cheetah.DummyTransaction

这样的确是可以了,以防万一,所有的都加上

--hidden-import Cheetah.DummyTransaction --hidden-import PyYAML

pyinstaller并不会把整个lib的代码全部放进去,比如这个cheet库,我发现他会分析你代码中使用到的库的某些工具,仅仅把这些用到的库工具打包进去,这么做也是为了尽可能的减小包体,如果代码中有动态加载的逻辑,pyinstaller就无法识别到,这时就需要--hidden-import打包选项了。

目录
相关文章
|
8月前
|
存储 运维 监控
《日志驱动系统优化:分布式架构下从排障到业务赋能的实战案例》
本文围绕分布式系统日志治理展开,记录了从日志混乱导致3小时故障排查,到优化后20分钟定位问题的实践过程。作者团队先确定“先规范、再存储、后优化”思路,解决多技术栈日志格式不统一、老模块TraceID透传难题,通过轻量切面实现兼容;再优化ELK索引策略与冷热数据分离,提升检索效率;还挖掘日志额外价值,预警业务异常、优化资源调度。方案运行8个月效果显著,作者强调日志治理需随业务迭代优化,建议团队从痛点切入,循序渐进落地,让日志成为系统优化的助力。
230 3
|
算法 PyTorch 算法框架/工具
PyTorch 实现FCN网络用于图像语义分割
本文详细讲解了在昇腾平台上使用PyTorch实现FCN(Fully Convolutional Networks)网络在VOC2012数据集上的训练过程。内容涵盖FCN的创新点分析、网络架构解析、代码实现以及端到端训练流程。重点包括全卷积结构替换全连接层、多尺度特征融合、跳跃连接和反卷积操作等技术细节。通过定义VOCSegDataset类处理数据集,构建FCN8s模型并完成训练与测试。实验结果展示了模型在图像分割任务中的应用效果,同时提供了内存使用优化的参考。
|
Java 机器人 数据安全/隐私保护
蓝桥杯历届真题题目+解析+代码+答案(2013-2020)(JavaA、B、C组)(C++语言)(Python)
蓝桥杯历届真题题目+解析+代码+答案(2013-2020)(JavaA、B、C组)(C++语言)(Python)
932 0
|
编解码 测试技术 Android开发
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
本文详细介绍了如何利用CameraX库实现高质量的照片及视频拍摄功能,包括添加依赖、初始化、权限请求、配置预览与捕获等关键步骤。此外,还特别针对不同分辨率和帧率的视频拍摄提供了性能优化策略,确保应用既高效又稳定。
2040 1
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
|
SQL 存储 Java
面向 Java 程序员的 SQLite 替代品
SQLite 是轻量级数据库,适用于小微型应用,但其对外部数据源支持较弱、无存储过程等问题影响了开发效率。esProc SPL 是一个纯 Java 开发的免费开源工具,支持标准 JDBC 接口,提供丰富的数据源访问、强大的流程控制和高效的数据处理能力,尤其适合 Java 和安卓开发。SPL 代码简洁易懂,支持热切换,可大幅提高开发效率。
WK
|
机器学习/深度学习 算法
什么是Sigmoid函数
Sigmoid函数是在机器学习及统计学中广泛应用的一种数学模型,尤其适用于逻辑回归与神经网络中的激活场景。该函数能将任意实数映射至(0,1)区间,象征概率或事件发生可能性。其S型曲线特性使其在二分类问题中表现出色,同时具备连续平滑与中心对称的特点,利于采用如梯度下降等优化算法。然而,Sigmoid函数在极端输入值下会出现梯度消失的问题,影响模型训练效果。尽管有此局限性,它在特定应用场景中依然重要,例如需要输出概率值的情况。
WK
1894 0
|
小程序 JavaScript Java
暹罗外卖开源啦,一款java多商户外卖系统-商家入驻如美团饿了么
暹罗外卖是一款Java外卖配送系统,适用于多商户入驻,对标美团外卖、饿了么。系统包含用户端、商家端、配送端以及总管理后台; 前端使用uni-app开发,可打包部署到微信小程序、APP、H5 Web端使用vue + Element开发 服务端使用java语言开发,技术栈:Spring Cloud & Alibaba + Redis + RocketMQ + WebSocket + ElasticSearch + ELK + Sentinel + Seata + SkyWalking + SpringBoot Admin + Promethues + Grafana
1178 2
暹罗外卖开源啦,一款java多商户外卖系统-商家入驻如美团饿了么
|
Python
python setup.py bdist_wheel 报错的处理办法
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: setup.py --help [cmd1 cmd2 .
13102 0
|
存储 小程序
【FreeRTOS】队列的使用
【FreeRTOS】队列的使用
519 0
|
XML 开发框架 Java
【Maven实战技巧】「插件使用专题」Maven-Archetype插件创建自定义maven项目骨架
【Maven实战技巧】「插件使用专题」Maven-Archetype插件创建自定义maven项目骨架
1375 0
【Maven实战技巧】「插件使用专题」Maven-Archetype插件创建自定义maven项目骨架

热门文章

最新文章