Python 让distutils安装预编译库?

Python 让distutils安装预编译库?,python,open-source,installation,compiled,Python,Open Source,Installation,Compiled,我管理一个用python编写的开源项目(,源代码在那里)。我们要求用户运行python setup.py install来安装软件。最近我们添加了一个编译的C++包(SoundTouch的一个端口——去源代码中的外部/外部)来查看它。我们希望安装基础混合库的StupU.Py文件也安装PysTouTouCH14库。 但是,我们不希望用户的系统上必须有gcc或msvc工具链。我们已经为通用平台(linux-i386、windows、mac 10.5和10.6)预编译了二进制文件,请转到trunk/e

我管理一个用python编写的开源项目(,源代码在那里)。我们要求用户运行python setup.py install来安装软件。最近我们添加了一个编译的C++包(SoundTouch的一个端口——去源代码中的外部/外部)来查看它。我们希望安装基础混合库的StupU.Py文件也安装PysTouTouCH14库。 但是,我们不希望用户的系统上必须有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

不幸的是,我要说的是,覆盖install命令才是正确的选择

使用自定义分发命令可以轻松完成此操作。例如,请参见[1]

考虑到多平台要求,您的第一个问题很难回答。如果只是windows,则可以使用安装后脚本选项运行脚本来处理库,或者只使用非python工具,例如。除了阿尔马德的建议,我不知道还能做些什么


对于第二个问题,您可能需要研究。

谢谢DoxaLogos。在这种情况下,我们可能不得不转向特定于平台的安装程序(NSI、mac上的软件包、debian的dkpg/apt等),这可能不是一个可怕的想法。但我希望有一个纯python的解决方案。。。可能不可能。嗯,即使您使用多个包工具,我认为您也可以使用Paver之类的工具自动创建包。所以,一旦您初始设置了所有内容,就可以使用Paver运行构建脚本。