假设我想分发一个CPython包,它包含共享库的绑定(在Linux上)。共享库来自OS的包管理器安装的包(例如apt
)。
库版本特定于操作系统分发:一个版本为1.1.0
,另一个版本可能版本为2.2.0
。
另一方面,有问题的绑定取决于操作系统中存在的共享库的特定版本。由于我的python包的版本控制遵循共享库版本控制,版本2.2.0
可能包含1.1.0
中不存在的符号,反之亦然。
如何在项目要求中分发和包含该包,以便为项目运行的不同发行版安装正确的绑定版本?
C绑定组件使用CPython API。从PEP 513
开始,它所绑定的共享库看起来不在manylinux1
平台标记的范围内。
我想我可以从setup.py
运行一些任意代码来检查库版本,然后相应地编译绑定,但这似乎是一个糟糕的解决方案。这需要我在我的软件包的每个版本中包含每个库版本的源代码(如果我错了,请纠正我)。
我想我可以在两个单独的包中分发绑定和上面提到的任意代码。但那对我来说仍然看起来很难看。