今天在用pyinstaller打包文件时,发现打包出来的exe运行就闪退,网上搜索一番之后发现是moviepy的锅
报错信息大概如下:
AttributeError: module audio/video.fx.all has no attribute fadein、crop
明明引用了moviepy的包,但是打包的时候找不到函数
这两篇文章说明了原因,并提供了一个解决方案
- https://blog.csdn.net/LaoYuanPython/article/details/105346224
- https://blog.csdn.net/LaoYuanPython/article/details/106133649
但是需要修改moviepy包中文件,说不定对以后使用有影响呢?所以我使用了另一种方案
引入包的时候不使用
from moviepy.editor import *
而是分别导入每个函数,例如:
from moviepy.video.io.VideoFileClip import VideoFileClip from moviepy.video.fx.crop import crop
当然,调用crop等函数时也要有一些变化
原来是这样的:
clip = (VideoFileClip(file).crop(x1=loc_x[0],y1=loc_y[0],x2=loc_x[1],y2=loc_y[1])
现在要这么写:
clip1 = (VideoFileClip(file).fx(crop,x1=loc_x[0],y1=loc_y[0],x2=loc_x[1],y2=loc_y[1])