使用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. 再次打包之后,就不会再出现模块缺失的报错了


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

被折叠的 条评论
为什么被折叠?



