Pyinstaller:moviepy打包报错AttributeError: module ‘moviepy.audio.fx.all‘ has no attribute ‘audio_fadein‘

在使用Python+PySide2开发中遇到moviepy库打包后运行报错,原因是audio_fadein模块缺失。通过查看日志定位问题,发现moviepy子包的动态加载方式导致pyinstaller无法正确处理。解决方法是手动修改moviepy音频和视频子包的_init_.py文件,注释掉动态加载代码并用print语句替换,然后重新打包,成功解决了模块缺失问题。
使用Python+PySide2开发工具时,使用到了第三方库 moviepy
本地调试是OK的,打包运行之后报错了
记录一下分析问题并找寻解决办法的过程

一、运行程序,通过命令行窗口的日志分析定位问题

1. 关于命令行窗口执行程序的方法请参考一下我之前写的文章
https://blog.youkuaiyun.com/J_____Q/article/details/113894369

2. 查看运行日志后发现,报错的原因为:audio_fadein 模块缺失
在这里插入图片描述
3. 参考大佬的文章后了解到:参考文章页面跳转
moviepy下的子包使用的是一种动态加载模块的模式加载包下的模块的
pyinstaller对这种模式不能处理,所以需要我们手动处理一下

4. 在本机的Python环境安装目录下,找到第三方库安装目录
在这里插入图片描述
5. 分别进入两个文件并将:fx > all > _ init _.py 文件使用PyCharm 打开
在这里插入图片描述

'''注释两个文件相同的该行代码'''
exec("from ..%s import %s" % (name, name))
# 分别对应替换为:
print("from  moviepy.audio.fx import %s" % (name))
print("from  moviepy.video.fx import %s" % (name))

6. 分别运行两个文件,将运行结果补充到 _ init _ 文件中
在这里插入图片描述
在这里插入图片描述
7. 再次打包之后,就不会再出现模块缺失的报错了
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值