使用 pyinstaller 转换为 exe 时出现 Moviepy 模块错误

Moviepy module error when converting to exe with pyinstaller

用pyinstaller py文件打包后出现以下错误:

Traceback (most recent call last):
 File "gui.py", line 10, in <module>
 File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
 File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
 File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
 File "PyInstaller\loader\pyimod03_importers.py", line540, in exec_module
 File "moviepy\editor.py", line 87, in <module>
 File "<string>", line 1, in <module>
AttributeError: module 'moviepy.audio.fx.all' has no attribute 'audio_fadein'
[8028] Failed to execute script gui

我的代码中没有使用任何称为音频的东西,只有将 mp4 转换为 mp3 的代码。

这是代码:

mp4_file = os.path.abspath(os.getcwd()) + "\Files\Mp3\Mp3_Temp_File\Temp_video.mp4"
mp3_file = os.path.abspath(os.getcwd()) + "\Files\Mp3\" + str(yt.title) + ".mp3"
videoclip = VideoFileClip(mp4_file)
audioclip = videoclip.audio
audioclip.write_audiofile(mp3_file)
audioclip.close()
videoclip.close() 

我该如何解决这个错误?我尝试使用不同的 pyinstaller 代码但一无所获

我有完全相同的代码和相同的错误。

这是我的解决方案:

  1. 您使用 pyinstaller 将其转换为 exe pyinstaller myfile.py(我知道 exe 不起作用)。
  2. 如果生成 exe,pyinstaller 添加一个与 python 脚本同名的 .spec 文件(例如:“myfile.spec”)。
  3. 您必须编辑 .spec 文件(您可以使用 Notepad++ 执行此操作)并像我一样添加行 a.datas += Tree("moviepypath", prefix='moviepy')
# -*- mode: python ; coding: utf-8 -*-


block_cipher = None


a = Analysis(
...)

a.datas += Tree("moviepypath", prefix='moviepy')
...

你必须在其中放置电影路径而不是“moviepypath”(不要忘记路径开头和结尾的“”)。 如果您不知道 moviepy 的路径,请按 windows + r 并输入 window %appdata%,向下滚动到文件夹“Python”,转到“站点-packages”并复制moviepy的路径。现在应该可以了。