【问题标题】:Distributing a Python module with ffmpeg dependency分发具有 ffmpeg 依赖项的 Python 模块
【发布时间】:2015-01-22 15:39:10
【问题描述】:

这里是新手软件开发人员。我正在开发一个 Python 模块,该模块利用 FFmpeg 框架中的一些功能——特别是 ebur128 过滤器函数。理想情况下,该模块将作为一个独立的、与平台无关的工具独立存在,用于验证音频剪辑是否符合 EBU 响度标准。它的设计目的是让最终用户只需要执行一个简单的(希望如此!)无痛的安装过程,这将包括 FFmpeg 库和我的 Python 包装器/GUI 的安装。

对于这个相当模糊的问题,我深表歉意,但是否有人对创建具有外部依赖关系的 Python 模块有一般建议,或者对跨平台标准化 FFmpeg 安装有具体建议? Distutils 似乎很有帮助——是否有其他指南或标准实践来开发一个整齐打包的 Python 工具?我想尽量减少最终用户的安装问题。

非常感谢。

【问题讨论】:

    标签: python ffmpeg distutils software-distribution


    【解决方案1】:

    适用于 Windows

    我认为很容易找到适用于任何系统的 ffmpeg 二进制文件,就像 Qt 或您正在使用的任何 GUI 库一样。您可以将这些二进制文件与您的项目一起提供,并且一切正常(不过,您可能希望区分 32 位和 64 位系统)。

    您似乎想要创建一个独立且易于最终用户安装的软件。 Inkscape 就是这样一个例子——它的安装程序包含 Python 和所有其他依赖项,以二进制形式(如果需要)。也就是说,对于 Windows,您确实不需要需要创建一个真正的 Python 包(允许使用 pip 安装),并且您确实不需要需要查看 distutils(其中支持构建 C 扩展)。我猜你都不需要/不想要。

    也许对您来说,组装一个良好的目录结构并与您的软件一起分发一个 ZIP 存档就足够了。例如,如果您不需要与 Windows 注册表交互,这就足够了。在 Windows 世界中,此类程序通常称为“独立”。但是,您可能仍然希望拥有一个真正的 Windows 安装程序(即使它只是一个自解压存档)。以下文章涵盖了您的要求,我相信:http://cyrille.rossant.net/create-a-standalone-windows-installer-for-your-python-application/ 它建议使用http://www.jrsoftware.org/isinfo.php 来创建这样的安装程序。

    其他平台

    在其他操作系统上会更加困难。例如,我认为创建在每个 Linux 系统上运行的 ffmpeg 二进制文件几乎是不可能的,因为 ffmpeg 本身具有如此多的二进制依赖项。我不知道你是否可以静态构建ffmpeg。

    【讨论】:

    • 非常感谢 Jan-Philip:这很有帮助,非常感谢您在特定平台的基础上解决这个问题。
    • 只是为了跟进这一点:我成功地使用 PyInstaller 将我的 python 脚本及其所有依赖项捆绑到一个干净的 Windows 安装程序中。然而,我发现 Mac 对应物更难。我可以让 GUI 从可执行文件中启动,但是当我尝试启动 ffmpeg 进程(使用 wxpython 线程)时,无论我如何构建我的目录层次结构,我都会得到以下信息: File "/.../out00- PYZ.pyz/threading",第 530 行,在 __bootstrap_inner" ... 文件 "/.../out00-PYZ.pyz/subprocess",第 1202 行,在 _execute_child OSError: [Errno 2] 没有这样的文件或目录。
    猜你喜欢
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 2018-11-30
    • 1970-01-01
    相关资源
    最近更新 更多