【发布时间】:2015-10-04 14:47:44
【问题描述】:
我有一个 Python 包,它只能在 Linux 上有意义地运行。我在docs 中看到setup.py 元数据中有一个platforms 键,但据我在distutils 源中四处寻找,这个元数据实际上并不是用于任何东西。
接下来,我查看了 PyObjC,一个著名的仅适用于 OS X 的 Python 包。我观察到它在其setup.py 中填充了上述platforms 键。但是,当我尝试在 Linux 上安装 PyObjC 时,不会以任何有意的方式阻止或阻止安装。随之而来的故障模式非常不优雅:当platform.mac_ver() 返回一个它不期望的值时,它会出错。我尝试手动解决该问题,distutils 似乎正在以它的快乐方式收集依赖项等,直到最终它未能找到特定于平台的文件...底线,distutils 不处理特定于平台的包以任何合理的方式。
理想情况下,我希望安装失败并显示一些消息,表明该软件包与当前平台不兼容。我已经摸索了一下,我能想到的“最好”的事情是对install 和develop 命令进行子类化并在那里手动处理平台检查。
有没有更好的办法?
【问题讨论】:
标签: python setuptools distutils