尝试使用 PyInstaller 将 Python 脚本转换为 exe。
在我的代码中,我使用 ffmpeg-python:
import ffmpeg
....
def ffmpeg_save_clip(self,output_video: str, clip_start: str, clip_end: str):
(ffmpeg
.input(self.file.get_videopath(), )
.output(output_video, vcodec='copy', ss=clip_start, to=clip_end, acodec='copy')
.global_args('-y')
.run())
所以我从终端调用 PyInstaller 并带有相关标志:
pyinstaller --windowed --hidden-import "ffmpeg-python" --noconsole --icon=app.ico --name "app" main.py
我也检查过:
pip install ffmpeg-python
Requirement already satisfied: ffmpeg-python in c:\python38\lib\site-packages (0.2.0)
Requirement already satisfied: future in c:\python38\lib\site-packages (from ffmpeg-python) (0.18.3)
但我从 PyInstaller 得到:
Hidden import 'ffmpeg-python' not found
应用程序在 Visual-studio 中工作,但是当我运行 pyinstaller exe 并尝试保存剪辑时,它冻结而没有响应。
注:我也:
尝试将 ffmpeg.exe 添加到 pyinstaller 应用程序的根文件夹中。
尝试使用 .spec 文件:
binaries=[('C:\\ffmpeg\\bin\\ffmpeg.exe', 'ffmpeg/),('C:\\ffmpeg\\bin\\ffplay.exe','ffplay/'), ('C:\\ffmpeg\\bin\\ffprobe.exe', 'ffprobe/')]
,
没有任何改变
PyInstaller 没有打包
ffmpeg-python
模块,而不是 ffmpeg.exe
。
首先,转到
c:\python38\lib\site-packages
并复制 ffmpeg
包文件夹。
接下来,将
ffmpeg
包文件夹粘贴到项目的根目录中。
最后,构建exe。无论您的命令是什么,您都应该在构建 exe 时使用
--add-data
命令添加 ffmpeg
包文件夹。
根据您的情况,请使用此命令。
pyinstaller --add-data="ffmpeg/*;ffmpeg" --windowed --noconsole --icon=app.ico --name "app" main.py
--add-data="ffmpeg/*;ffmpeg"
这意味着将 ffmpeg
文件夹内的所有文件和子文件夹添加到 exe 或 app 文件夹内创建的 ffmpeg
文件夹中。
这应该可以解决问题。如果没有找到其他模块,请使用相同的步骤打包模块。
顺便说一下,你也可以直接将
ffmpeg
文件夹复制粘贴到pyinstaller应用程序的根文件夹中。在这种情况下,您不需要使用 --add-data
命令。