我刚刚使用Cython将我的C库的一部分编译为扩展,作为“概念证明”。我设法破解了代码(常量纠正问题等),最终构建了一个扩展。
然而,当我尝试导入新创建的扩展时,我得到了以下错误:
ImportError: dynamic module does not define init function
我做错了什么?我该如何解决这个问题?
我在Ubuntu 10.0.4上使用Cythn 0.11.2和Python 2.6.5
发布于 2014-01-29 20:08:47
我发现导致这个问题的一个常见原因是,当使用distutils安装文件编译代码时,.pyx基本名称与扩展名不匹配,例如:
ext = Extension(name='different', sources=['cython_ext.pyx']) # Won't work
为了避免这个问题,扩展名应该完全相同,在本例中为cython_ext
。
发布于 2012-12-03 13:25:18
这是一个非常晚的回答--但我也遇到了同样的错误,当我使用__cinit__
而不是__init__
时,我的错误就消失了。我还在学习扩展类型,所以目前我不知道为什么会发生这种情况。:) (你可以看看http://docs.cython.org/src/reference/extension_types.html#initialization-cinit-and-init)希望这对某些人有用。
发布于 2018-04-16 03:18:30
在我的例子中,另一个很晚的答案是,当我试图使用另一个python环境中的终端使用python3时,我意外地在运行python2的终端中调用了cython。
到处使用相同的python版本修复了这个问题。
https://stackoverflow.com/questions/8024805
复制相似问题