Skip to main content
 首页 » 编程设计

包中的 Python C 扩展之不起作用

2025年05月04日8thcjp

我正在打包我的 python C 扩展,但我在这里遇到了麻烦:

. 
|-- c_ext/ 
|   |-- __init__.py 
|-- c_src/ 
setup.py 

有了这个setup.py

from distutils.core import setup, Extension 
 
setup( name = "Utilities", 
       version = '1.0', 
       description = ('Various utils'), 
       packages = ["utils"], 
       ext_modules = [Extension("utils.c_ext", ['c_src/c_extmodule.c'])] 
       ) 

我可以毫无问题地构建,但在安装后我无法导入我的模块,我只是得到一个 ImportError。

我确定这是微不足道的事情,所以我错过了什么?

提前致谢!

请您参考如下方法:

您的模块中是否有具有以下签名的函数:

PyMODINIT_FUNC initc_ext(void); 

当您导入 C 扩展时,它会调用函数 init,其中是扩展的确切名称。 (请注意,约定是将 C 扩展命名为类似 _foo 的名称,您将获得类似 init_foo 的函数)

确切的错误也有助于更好地诊断。