Pyinstaller 未找到隐藏导入“ffmpeg-python”

问题描述 投票:0回答:1

尝试使用 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 并尝试保存剪辑时,它冻结而没有响应。

注:我也:

  1. 尝试将 ffmpeg.exe 添加到 pyinstaller 应用程序的根文件夹中。

  2. 尝试使用 .spec 文件:

    binaries=[('C:\\ffmpeg\\bin\\ffmpeg.exe', 'ffmpeg/),('C:\\ffmpeg\\bin\\ffplay.exe','ffplay/'), ('C:\\ffmpeg\\bin\\ffprobe.exe', 'ffprobe/')]
    ,

没有任何改变

python ffmpeg pyinstaller
1个回答
0
投票

PyInstaller 没有打包

ffmpeg-python
模块,而不是
ffmpeg.exe

首先,转到

c:\python38\lib\site-packages
并复制
ffmpeg
包文件夹。 copy ffmpeg-python

接下来,将

ffmpeg
包文件夹粘贴到项目的根目录中。 paste ffmpeg-python

最后,构建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
命令。

© www.soinside.com 2019 - 2024. All rights reserved.