基于 OS 不同 install_requires

Different install_requires based on OS

我继承了一个 python 项目,该项目仅包含 1 个 python 文件,用于在 Linux 上安装和 运行。我对 python 知之甚少,对 Linux 知之甚少。

Ubuntu、Fedora 和 Arch 目前有单独的构建过程,分别生成 DEB 文件、RPM 文件和 PKG.TAR.XZ 文件。然后,用户需要根据他们的系统完成不同的安装过程。

我的首要任务之一是为我们的用户巩固和简化这个过程。经查,出现Snap Store could be a good solution. The Snap Store appears to require setuptools.

不过,我的每种构建类型都取决于不同的要求。例如,DEB 和 RPM 需要 python3-suds,但 ARCH 需要 python-suds。 ARCH 和 RPM 想要 libappindicator-gtk3,但 DEB 想要 gir1.2-appindicator3-0.1gir1.2-gtk-3.0

我找不到在我的 setup.py install_requires 属性 中包含这些条件要求的明显方法。你将如何着手实现这一目标?还是我完全走错了路?

回答时请记住我是新手!谢谢!

首先,您可以检查一下https://www.flatpak.org/它类似于Snap。只是 IMO 稍微好一点。

使用 Snap 或 Flatpak 时,您不关心需要 python-suds 还是 python3-suds。结果基本上是一个容器。您只需选择一个 运行 时间在其上构建并解决那里的问题。然后容器(无论是 Flatpak 的 Snap)在每个 OS 上都是 运行 - 无论是 Ubuntu、Fedora 还是 Arch。它与其包管理工具没有任何关系。它是孤立的。

经过大量研究,我发现由于 snap 应用程序全部构建在 Ubuntu VM 上,因此只需要包含所有 Ubuntu 依赖项,snap 进程将捆绑应用程序中的那些依赖项。然后,该应用程序将适用于任何 Linux 风格。所以我没有必要尝试在 install_requires 中编写条件依赖项。我需要做的就是包含 Ubuntu 依赖项。

我最终通过这个非常有帮助的演练得出了这个结论,我自己的测试也证实了这一点: https://medium.com/@abulka/getting-python-and-wxpython-apps-into-the-ubuntu-app-store-ccca7ae537a3

我希望这对其他人有帮助。