我继承了一个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.1
和gir1.2-gtk-3.0
。
我找不到在我的setup.py install_requires
属性中包含这些条件要求的明显方法。您将如何实现这一目标?还是我完全走错了轨道?
[当您回答时,请记住,我是新手!谢谢!
如果您的用例足够简单,则可以通读这些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
毕竟只是一个模块,因此在这里放置您自己的自定义代码不会受到伤害。