首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Cython编译的C扩展: ImportError:动态模块没有定义初始化函数

Cython编译的C扩展: ImportError:动态模块没有定义初始化函数
EN

Stack Overflow用户
提问于 2011-11-06 10:21:03
回答 6查看 21.2K关注 0票数 48

我刚刚使用Cython将我的C库的一部分编译为扩展,作为“概念证明”。我设法破解了代码(常量纠正问题等),最终构建了一个扩展。

然而,当我尝试导入新创建的扩展时,我得到了以下错误:

代码语言:javascript
复制
ImportError: dynamic module does not define init function 

我做错了什么?我该如何解决这个问题?

我在Ubuntu 10.0.4上使用Cythn 0.11.2和Python 2.6.5

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-01-29 20:08:47

我发现导致这个问题的一个常见原因是,当使用distutils安装文件编译代码时,.pyx基本名称与扩展名不匹配,例如:

代码语言:javascript
复制
ext = Extension(name='different', sources=['cython_ext.pyx']) # Won't work

为了避免这个问题,扩展名应该完全相同,在本例中为cython_ext

票数 74
EN

Stack Overflow用户

发布于 2012-12-03 13:25:18

这是一个非常晚的回答--但我也遇到了同样的错误,当我使用__cinit__而不是__init__时,我的错误就消失了。我还在学习扩展类型,所以目前我不知道为什么会发生这种情况。:) (你可以看看http://docs.cython.org/src/reference/extension_types.html#initialization-cinit-and-init)希望这对某些人有用。

票数 2
EN

Stack Overflow用户

发布于 2018-04-16 03:18:30

在我的例子中,另一个很晚的答案是,当我试图使用另一个python环境中的终端使用python3时,我意外地在运行python2的终端中调用了cython。

到处使用相同的python版本修复了这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8024805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档