python - 使用 Python API 为 C 项目安装脚本

标签 python c linux unix makefile

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

为 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 扩展模块的适当目录? 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

关于python - 使用 Python API 为 C 项目安装脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5719506/

相关文章:

python - 无法从字典中获取值

linux - 较新版本的 git 安装在 OSX 上但未被使用。我怎样才能找到它并使用它?

linux - 在不知道目录名称的情况下打开目录

linux - Spark-submit 在错误的目录中查找

python - Django 模型表单集 : only track changes to those items that have been updated/saved in the set?

python - Eclipse osx 中的 MySQLdb

python - PyInstaller,使模块像普通 Python 一样不可导入

c - 如何在 C 语言的缩小示例中使用 __extension__ 和 __typeof__?

c++ - 指针对象的内存分配

sql - 在 SQLite 中返回删除的行