如何让distutils安装预构建的编译库?
我在管理一个开源项目(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/文件夹里构建好了。
所以我有两个直接的问题:
- 我该如何让setup.py自动“安装”预构建的.so和.pyd文件到正确的位置,而不需要一个构建系统?
- 我们的主setup.py文件如何能同时运行另一个包含包(pysoundtouch14的setup.py)的setup.py?
2 个回答
1
很遗憾,我得说,重写安装命令是个不错的选择。
这可以通过自定义分发命令轻松实现。比如,可以参考一下这个链接:[1] http://svn.zope.org/Zope/branches/2.9/setup.py?rev=69978&view=auto