【问题标题】:Handling executables dependency on github处理对 github 的可执行文件依赖
【发布时间】:2019-12-05 06:35:59
【问题描述】:

我目前正在使用 Python 构建一个用于教育目的的开源项目,我将把它添加到 Github 上。它使用 ffmpeg 库作为 64 位编译的 exe(我在 windows 上),通过在代码中使用命令行参数调用可执行文件。

我的问题是,如何处理其他人尝试使用我的代码的情况(比如说客户,即使没有)。因为他们还需要 ffmpeg 可执行文件。

  • 包括 ffmpeg 可执行文件到 Github 存储库(似乎错误,也会 在多平台上失败)。
  • 在代码开头添加依赖控制,通知用户他们应该下载可执行文件。 (会使用户 做一些工作)
  • 创建存储此文件的安装程序(不知道如何与 github 结合)

在 linux 中,ffmpeg 本身可以作为库安装,将其添加为依赖项将在 linux 中工作,但是在 Windows 中,这需要将安装目录添加到 PATH(如果已安装,而不是在代码附近复制粘贴)。为用户做更多的工作。

ffmpeg 只是一个例子。我也对使用其他编译的二进制文件感到好奇(如果有其他使用这些项目的方法,我愿意接受建议)。

我还包括 ffmpeg 和 Python 作为标签,以防这些工具在这些情况下提供指导(在互联网上找不到,或者不知道去哪里找)。

【问题讨论】:

  • 所以首先没有通用的答案。您需要查看您正在使用的工具/二进制文件的许可证。某些许可证会阻止您将可执行文件与您的代码一起发布,并且需要单独下载。此外,如果您是跨平台的,那么每个环境中的步骤会有所不同,因此您将记录如何在每个环境中设置可执行文件,或者如果您想让它变得简单,您将把它作为设置的一部分。这一切还取决于您要付出多少努力来让使用您的图书馆的人生活更轻松。

标签: python github ffmpeg dependencies dependency-management


【解决方案1】:

在 Windows 中,这需要将已安装的目录添加到 PATH(如果已安装,而不是在代码附近复制粘贴)。为用户做更多的工作。

不完全是。
您的程序应在首次启动时:

  • detect its runtime folder(启动它的文件夹,不必在%PATH%
  • 检测它所依赖的可执行文件是否在同一个文件夹中(此处以ffmpeg 为例)
  • 下载它(从Windows build page)到运行时文件夹(意思是你自己的程序所在的位置)
  • 运行程序的其余部分,使用运行时文件夹作为路径调用下载的可执行文件。

【讨论】:

    【解决方案2】:

    这显然取决于上下文,但如果在每个平台上为包管理器提供说明还不够,您可以提供下载一个可执行文件,其中包含您的应用程序以及某种沙箱中所需的所有依赖项,然后您需要确保您对这些依赖项的调用具有正确的路径,以便它们引用包内的版本以避免与已安装版本发生任何冲突。

    当您想要对数据库和/或服务器进行沙箱处理并且用户能够一次性将其全部删除或确保它不会与其他任何内容发生冲突时,这很常见。

    这就是MAMP 项目所做的。您在一个应用程序中拥有所需的一切:MySQL 数据库、Apache Web 服务器、PHP 等。您可以启动并运行您的环境。如果您将可执行文件放入垃圾箱,它会删除所有内容。

    这不是唯一的例子。对于 ruby​​ Web 应用程序,有一个类似的项目称为“机车”。我不知道它是否已经完成,但类似的东西正在为 Rails.app 包准备中。这也是LÖVE 项目让你distribute games 的方式。它只是为包含 Lua 编程语言和所有所需库的任何平台创建一个可执行文件。任何人都可以尝试游戏或将其丢弃,而无需安装其他任何东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-16
      • 1970-01-01
      • 2015-09-18
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多