python - 打包包含 C 共享库的 Python 库的最佳方法?

标签 python c distutils

我写了一个库,它的主要功能是用 C 语言实现的(速度很关键),它周围有一个薄薄的 Python 层来处理 ctypes 问题。

我要打包它,我想知道如何才能最好地解决这个问题。它必须与之交互的代码是一个共享库。我有一个构建 C 代码并创建 .so 文件的 Makefile,但我不知道如何通过 distutils 编译它。我是否应该通过覆盖 install 命令来调用 makesubprocess (如果是这样,是 install 的地方为此,还是 build 更合适?)

更新:我想指出,这不是 Python 扩展。也就是说,C 库本身不包含与 Python 运行时交互的代码。 Python 正在对直接的 C 共享库进行外部函数调用。

最佳答案

鉴于您已按照有关如何 create Python extensions in C 的说明进行操作,您应该像 this documentation 中那样征用扩展模块.
所以你的库的 setup.py 脚本应该是这样的:

from distutils.core import setup, Extension
setup(
   name='your_python_library',
   version='1.0',
   ext_modules=[Extension('your_c_extension', ['your_c_extension.c'])],
)

distutils 知道如何将您的扩展编译为 C 共享库,以及将它放在哪里。

当然我没有关于您的库的更多信息,因此您可能想向 setup(...) 调用添加更多参数。

关于python - 打包包含 C 共享库的 Python 库的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24062830/

相关文章:

python cProfile 和配置文件模型跳过函数

c - 如何从程序集更改CPU频率(从Windows设备驱动程序)

c - 如何从文件中读取魔数(Magic Number)?

python - 如何在 setup.py 脚本中为 Python 扩展模块指定头文件?

python - 获取字符串日期的格式

python - 如何在python中重新对齐图像片段?

python - 如何使用 argparse 在 python 脚本中通过管道发送参数?

c - extern 是编写不是定义的声明的唯一方法吗?

python - 为什么我不能使用 distutils 在 Python 发行版中包含这些数据文件?

python - 如何使设置工具遵循符号链接(symbolic link)?