我正在尝试使用 auto-py-to-exe 为使用 ffmpeg 的 PyQT 应用程序生成一个 exe。
在应用程序中,有对 ffmpeg 作为操作系统命令的调用(如“ffmpeg -i file ... output”)。 由于我的计算机上安装了 ffmpeg,并且可以从 Windows 路径访问,因此当我在计算机上运行应用程序 exe 时,没有任何问题。
但是,当有人没有安装 ffmpeg 时,他/她会遇到类似“'ffmpeg' 未被识别为内部或外部命令、操作程序或批处理文件”的错误
我不想将 ffmpeg 放在应用程序的文件夹中,因为我调用已经将 ffmpeg 作为操作系统命令调用的本地模块。
我首先尝试将 ffmpeg.exe 添加为文件(按照一篇 stackoverflow 帖子中的建议),然后添加为二进制文件,但没有成功
我已经尝试过这里所述的配置
有人可以帮我吗?
对我有帮助的答案是这里。 我将 ffmpeg.exe 添加到根目录下的二进制文件中,并将其作为附加文件添加到根目录下。
--add-data "D:/sdw/ffmpeg/ffmpeg.exe;." --add-binary "D:/sdw/ffmpeg/ffmpeg.exe;."
然后在代码中,您需要使用上面答案中突出显示的相对路径来调用 ffmpeg -i... 内容。
def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
try:
# PyInstaller creates a temp folder and stores path in _MEIPASS
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
所以 subprocess.run 是这样的
subprocess.run(resource_path('ffmpeg -i .... ')
这对我有用,但是我只是一个从事小项目的菜鸟,所以我希望它至少为您指明了正确的方向。