使用 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 代码但一无所获
我有完全相同的代码和相同的错误。
这是我的解决方案:
- 您使用 pyinstaller 将其转换为 exe
pyinstaller myfile.py
(我知道 exe 不起作用)。
- 如果生成 exe,pyinstaller 添加一个与 python 脚本同名的 .spec 文件(例如:“myfile.spec”)。
- 您必须编辑 .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的路径。现在应该可以了。
用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 代码但一无所获
我有完全相同的代码和相同的错误。
这是我的解决方案:
- 您使用 pyinstaller 将其转换为 exe
pyinstaller myfile.py
(我知道 exe 不起作用)。 - 如果生成 exe,pyinstaller 添加一个与 python 脚本同名的 .spec 文件(例如:“myfile.spec”)。
- 您必须编辑 .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的路径。现在应该可以了。