Jay*_*yce 4 python cx-freeze moviepy
我使用 cx_freeze 将 python 项目构建到一个带有 .exe 及其依赖项的文件夹中,但是当我运行 .exe 时出现错误:
AttributeError: module 'moviepy.audio.fx.all' has no attribute 'audio_fadein'
Run Code Online (Sandbox Code Playgroud)
我已阅读 MoviePy 的文档,但无法找出发生这种情况的原因。我的 Python 程序在 IDE (PyCharm) 中完美运行,但在编译后,我收到 MoviePy 错误。我使用了推荐的from moviepy.editor import *
我实际上并没有audio_fadein直接在我的脚本中使用 ,所以当我显示我的视频时它必须被 MoviePy 调用。这是代码:
def cherrybyte():
pygame.display.set_caption('©2017 CherryByte™ Software')
pygame.mouse.set_visible(False)
logo = VideoFileClip('CherryByte Logo.mp4')
logo.preview()
pygame.mouse.set_visible(True)
Run Code Online (Sandbox Code Playgroud)
编辑:我现在也尝试将导入语句更改为from moviepy.editor import VideoFileClip但完全相同的错误。
小智 7
我在使用 pyinstaller 构建 .exe 文件时遇到了同样的错误。但是,我将导入语句更改为from moviepy.video.io.VideoFileClip import VideoFileClip
并且它起作用了。
小智 2
对于遇到同样问题的每个人,我通过修改所选的 初始化文件解决了这个问题,如下图所示:
其中有一段代码导入 fx 文件夹中的每个函数:
__all__ = [name for _, name, _ in pkgutil.iter_modules(
fx.__path__) if name != "all"]
for name in __all__:
exec("from ..%s import %s" % (name, name))
Run Code Online (Sandbox Code Playgroud)
注释此块并手动导入所需的每个函数,如下所示:
from moviepy.video.fx.accel_decel import accel_decel
from moviepy.video.fx.blackwhite import blackwhite
from moviepy.video.fx.blink import blink
from moviepy.video.fx.crop import crop
from moviepy.video.fx.even_size import even_size
from moviepy.video.fx.fadein import fadein
from moviepy.video.fx.fadeout import fadeout
from moviepy.video.fx.mirror_x import mirror_x
from moviepy.video.fx.mirror_y import mirror_y
from moviepy.video.fx.resize import resize
#etc.
Run Code Online (Sandbox Code Playgroud)
对 moviepy.audio.fx.all 中的 init 执行相同操作
| 归档时间: |
|
| 查看次数: |
2581 次 |
| 最近记录: |