You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SWIG、C和setuptools构建Hello World模块时遇导入错误

解决SWIG+setuptools导入模块时的PyInit_hello错误

问题原因

出现ImportError: dynamic module does not define module export function (PyInit_hello)是因为setuptools未自动调用SWIG处理.i接口文件,直接将其当作普通C源编译,导致缺失Python 3要求的模块初始化函数,也未生成必要的Python绑定代码。

解决方案

1. 确保系统已安装SWIG

根据操作系统安装SWIG:

  • Ubuntu/Debian:sudo apt install swig
  • macOS(Homebrew):brew install swig
  • Windows:下载SWIG二进制包并添加到系统PATH

2. 修改pyproject.toml配置

更新[tool.setuptools]下的ext-modules,明确指定SWIG接口文件和编译选项:

[tool.setuptools]
ext-modules = [
  { 
    name = "hello", 
    sources = ["src/hc/hello.c"],
    swig_sources = ["src/hc/hello.i"],
    swig_opts = ["-python"]
  }
]

通过swig_sources告诉setuptools处理SWIG接口文件,swig_opts显式指定生成Python绑定(部分环境下可省略,显式添加更稳妥)。

3. 重新构建安装

清理旧构建文件后重新安装:

rm -rf build dist *.egg-info
pip install -e .

验证

进入Python交互环境测试:

>>> import hello
>>> hello.say_hello()
Hello, World!

内容的提问来源于stack exchange,提问作者Utkonos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 01:15:55