基于操作系统的不同安装要求

问题描述 投票:0回答:1

我继承了一个python项目,该项目完全由1个python文件组成,该项目旨在在Linux上安装和运行。我对python一无所知,对Linux的了解却少得多。

当前,对于Ubuntu,Fedora和Arch,有单独的构建过程,分别生成DEB文件,RPM文件和PKG.TAR.XZ文件。然后,用户需要根据其系统执行不同的安装过程。

我的首要任务之一是为我们的用户巩固和简化此过程。经过调查,看来Snap Store可能是一个很好的解决方案。快照存储似乎需要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属性中包含这些条件要求的明显方法。您将如何实现这一目标?还是我完全走错了轨道?

[当您回答时,请记住,我是新手!谢谢!

python linux setuptools snapcraft install-requires
1个回答
0
投票

如果您的用例足够简单,则可以通读这些docs

或者,要获得对每个平台上发生的事情的更多控制,您可以使用platform模块,并为每个体系结构准备一组不同的install_requires列表,甚至准备整个setup调用。

install_requires = {
    "AMD64": ["dependency1", "dependency2"],
    "x86_64": ["dependency1", "dependency3"]
}[platform.machine()] # or however else do you wish to differentiate the platforms

setup (
...
install_requires=install_requires
)

它稍微通用一些,您可以将其应用于任何东西,如果找不到“正确”的方式(如果有的话!),我总是使用它。 setup.py毕竟只是一个模块,因此在这里放置您自己的自定义代码不会受到伤害。

© www.soinside.com 2019 - 2024. All rights reserved.