让distutils安装预构建的编译库?

bwh*_*man 9 python installer open-source compiled

我管理一个用python编写的开源项目(Remix,源代码可用).我们要求用户运行python setup.py install来安装该软件.最近我们添加了一个已编译的C++包(SoundTouch的一个端口 - 转到源代码中的trunk/externals来查看它.)我们希望安装基本Remix库的setup.py文件也可以安装pysoundtouch14库.

但是,我们不希望用户必须在其系统上使用gcc或msvc工具链.我们为常见平台(linux-i386,windows,mac 10.5和10.6)预编译了二进制文件,转到trunk/externals/pysoundtouch14/build来查看它们.我希望没有安装gcc或msvc的用户可以运行pysoundtouch14的setup.py,它会检测到我们预建的二进制文件的存在,并将它们复制到正确的位置(/Library/Python/2.5/site-packages例如.)但这不会发生.例如,在一个新的10.5系统上,setup.py抱怨没有安装gcc,即使它需要安装的.so已经内置在build /文件夹中.

所以我有两个直接的问题:

  • 如何在不需要构建系统的情况下,根据平台自动将setup.py自动"安装"在正确位置的预安装.so和.pyd文件?
  • 一个setup.py(我们的主要setup.py文件)如何运行另一个包含的包的setup.py(pysoundtouch14的setup.py?)

Jay*_*son 1

考虑到多平台要求,你的第一个问题是一个棘手的问题。如果只是 Windows,您可以使用安装后脚本选项来运行脚本来处理库,或者只使用非 python 工具,例如NSIS。我不确定除了阿尔马德的建议之外还能做什么。

对于你的第二个问题,你可能想看看Paver