我有一个Python包,只能在Linux上有意义地运行。我在docs中看到,setup.py
元数据中有一个platforms
密钥,但据我所知,在distutils
源代码中可以看到,该元数据实际上并不是用于的任何内容。如何制作特定于平台的Python包?
接下来,我去看了PyObjC,这是一个着名的OS X only Python软件包。我观察到它在setup.py
中填充了前述的platforms
密钥。但是,当我尝试在Linux上安装PyObjC时,不会以任何有意的方式阻止或阻止安装。接下来的失败模式非常不正确:当platform.mac_ver()
返回一个它并不期望的值时,它会出错。我尝试手动修复这个问题,并且distutils
似乎正在采取它的快乐方式收集依赖关系等,直到最终失败寻找一个特定于平台的文件...底线,distutils
没有以任何合理的方式处理平台特定的软件包。
理想情况下,我希望安装失败,并显示一些消息,指出该软件包与当前平台不兼容。我已经讨论了一些,我已经能够提出的“最好”的事情包括对install
和develop
命令进行子类化,并在那里手动处理平台检查。
有没有更好的方法?
呀,这肯定是工作的,主要是我已经用它的方式,但它只是有点笨重。 : - / – ipmcc