我管理一个开源项目(Remix, 源代码可在那里找到),使用Python编写。我们要求用户运行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/文件夹中构建好了。
然而,我们不希望用户必须在他们的系统上拥有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文件)如何运行另一个包(pysoundtouch14的setup.py)的setup.py?