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

使用Python+PySide2开发工具时,使用到了第三方库 moviepy
本地调试是OK的,打包运行之后报错了
记录一下分析问题并找寻解决办法的过程

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

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

2. 查看运行日志后发现,报错的原因为:audio_fadein 模块缺失
Pyinstaller:moviepy打包报错AttributeError: module ‘moviepy.audio.fx.all‘ has no attribute ‘audio_fadein‘_第1张图片
3. 参考大佬的文章后了解到:参考文章页面跳转
moviepy下的子包使用的是一种动态加载模块的模式加载包下的模块的
pyinstaller对这种模式不能处理,所以需要我们手动处理一下

4. 在本机的Python环境安装目录下,找到第三方库安装目录
Pyinstaller:moviepy打包报错AttributeError: module ‘moviepy.audio.fx.all‘ has no attribute ‘audio_fadein‘_第2张图片
5. 分别进入两个文件并将:fx > all > _ init _.py 文件使用PyCharm 打开
Pyinstaller:moviepy打包报错AttributeError: module ‘moviepy.audio.fx.all‘ has no attribute ‘audio_fadein‘_第3张图片

'''注释两个文件相同的该行代码'''
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 _ 文件中
Pyinstaller:moviepy打包报错AttributeError: module ‘moviepy.audio.fx.all‘ has no attribute ‘audio_fadein‘_第4张图片
Pyinstaller:moviepy打包报错AttributeError: module ‘moviepy.audio.fx.all‘ has no attribute ‘audio_fadein‘_第5张图片
7. 再次打包之后,就不会再出现模块缺失的报错了
Pyinstaller:moviepy打包报错AttributeError: module ‘moviepy.audio.fx.all‘ has no attribute ‘audio_fadein‘_第6张图片

你可能感兴趣的:(PySide2,python自学笔记,python,pycharm)