安装工具包如何在安装包之前构建共享库

hit*_*it9 5 setuptools

我的pacakge有*.py文件和*.c文件,*.py文件使用ctypes来导入从c源构建的共享库.

现在我有问题如何编写我的setup.py.

安装脚本需要将my_c_file.c构建到my_c_file.so,然后将其复制到python libpath.

我想知道'应该'的方式是什么?

小智 3

您可能应该看看使用 distutils 构建 C 和 C++ 扩展

如果您围绕下面的示例构建 setup.py 文件,setuptools 应该将您的 c 文件编译为 my_c_lib.so 并自动将其添加到您安装的包中(未经测试)。

from distutils.core import setup, Extension

c_module = Extension('my_c_lib',
                sources = ['my_c_file.c'])

setup (name = 'my_package',
    version = '1.0',
    description = 'This is a package in which I compile a C library.',
    ext_modules = [c_module])
Run Code Online (Sandbox Code Playgroud)

  • 对于将来的其他人来说,这不是声明“扩展”所做的事情。“扩展”将被编译成 PYD 文件,从技术上讲,它是一个共享库,但预计它具有特定的结构(导出特定符号)。它应该直接在 python 中使用,即“from my_c_file import my_function;” 我的函数()`。当您想要使用“ctypes”调用任意共享库时,这不是您想要的。 (2认同)