用Python API为C项目安装脚本

我有一个主要用C语言编写的项目,但是它也有一个使用C语言编写的Python扩展模块的Python API。

为Linux / UNIX环境编写安装/部署脚本的最佳方法是什么? 通常,我使用make实用程序来编译和安装用C编写的项目。大多数情况下,我只需将make实用程序将所有源代码编译为可执行文件,然后将可执行文件复制到/usr/local/bin

但是,我的Python API需要编译/安装共享库( .so )文件以供Python使用。 这基本上涉及编译必要的C文件,然后将共享库复制到Python sys.path一部分目录,如/usr/local/lib/pythonX.X/dist-packages/

但是如何通过Make实用程序检测Python扩展模块的相应目录? 有没有一个环境variables或东西,列出了Python的sys.path中的目录?

如果你出于某种原因不能使用Python的distutils,你可以在shell中尝试一些启发式的方法:

 INSTALL_PATH=$(python -c 'import sys; print [ i for i in sys.path if i.endswith("-packages") ][0]') 

测试:

  • RHEL5:/usr/lib64/python2.4/site-packages
  • Debian:/usr/local/lib/python2.6/dist-packages
  • Solaris:/usr/local/lib/python2.6/site-packages

我将把这个项目分成两部分。 你的C部分可以照常使用。 你的python模块可以使用python setup工具,这些工具能够构建扩展。

(你也可以编写安装目标,所以你不必手动复制)