如何创建特定于平台的Python包?

时间:2015-10-04 14:47:44

标签: python setuptools distutils

我有一个只能在Linux上有意义地运行的Python包。我在docs中看到platforms元数据中有一个setup.py键,但就我在distutils来源中探讨的情况而言,这个对于任何事情,元数据实际上都不是使用

接下来,我去看了PyObjC,一个着名的OS X-only Python包。我发现它填充了platforms中前面提到的setup.py密钥。但是,当我尝试在Linux上安装PyObjC时,不会以任何有意的方式阻止或阻止安装。随之而来的失败模式非常不合理:当platform.mac_ver()返回它不期望的值时,它会出错。我尝试手动修复这个问题,distutils似乎正在采用收集依赖关系等的快乐方式,直到最终找不到特定于平台的文件...底线,distutils未处理特定于平台的包以任何合理的方式。

理想情况下,我希望安装失败并显示一些消息,指出该软件包与当前平台不兼容。我已经考虑了一点,我能够提出的“最好”的东西包括继承installdevelop命令并在那里手动处理平台检查。

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

我可能过于简单了,但是在setup.py的顶部你不能做到这样的事情:

import platform
distname,version,id = platform.linux_distribution()
if not distname:
   raise Exception('Aborting installation: Requires Linux')