snapcraft - 基于操作系统的不同 install_requires
问题描述
我继承了一个 python 项目,它只包含 1 个 python 文件,旨在在 Linux 上安装和运行。我对python知之甚少,对Linux知之甚少。
目前 Ubuntu、Fedora 和 Arch 有单独的构建过程,它们分别生成一个 DEB 文件、一个 RPM 文件和一个 PKG.TAR.XZ 文件。然后,用户需要根据他们的系统经历不同的安装过程。
我的首要任务之一是为我们的用户整合和简化这个过程。经过调查,Snap Store似乎是一个不错的解决方案。Snap Store 似乎需要setuptools。
但是,我的每种构建类型都取决于不同的要求。例如,DEB 和 RPM 需要python3-suds
,但 ARCH 需要python-suds
。ARCH 和 RPM 想要libappindicator-gtk3
,但 DEB 想要gir1.2-appindicator3-0.1
and gir1.2-gtk-3.0
。
我找不到在我的 setup.pyinstall_requires
属性中包含这些条件要求的明显方法。您将如何实现这一目标?或者,我是否完全走错了路?
当您回答时,请记住我是新手!谢谢!
解决方案
首先,您可以查看https://www.flatpak.org/它类似于 Snap。只是 IMO 稍微好一点。
使用 Snap 或 Flatpak 时,您不需要关心是否需要 python-suds 或 python3-suds。结果基本上是一个容器。您只需选择在其之上构建的运行时并在那里解决依赖项。然后容器(无论是 Flatpak 的 Snap)在每个操作系统上运行 - 无论是 Ubuntu、Fedora 还是 Arch。它与其包管理工具没有任何关系。它是孤立的。
推荐阅读
- excel - 打开电子表格并自动输入链接电子表格的密码
- python - 如何从设定的日期仅获取 7 天的数据?
- javascript - 没有重载匹配此调用。类型“字符串”不可分配给类型“信号”
- android - 收到错误“智能转换为 'EditText!' 是不可能的,因为 'usernameET' 是一个可变属性,此时可能已更改”
- c# - 使用 c# 从 ADFS 注销
- javascript - 将base64解码为二进制字符串
- heroku - 如何将现有的 heroku 数据剪辑添加到本地 postgres 开发数据库?
- python - Numpy连接+合并一维数组
- reactjs - 如何访问特定项目密钥
- ruby-on-rails - Capybara 代理在测试时打开/关闭