我正在使用Python3.4,我正在尝试安装模糊模块
https://pypi.python.org/pypi/Fuzzy. 由于提到它只适用于Python2,所以我尝试使用cython来转换它。以下是我遵循的步骤:
python-config --cflags -c fuzzy.c -o fuzzy.opython-config --libs当我试图导入模糊时,我得到了一个错误:
dynamic module does not define init function (PyInit_fuzzy)有什么问题吗?这是因为python2和python3的冲突吗?如何解决这个问题?
发布于 2015-04-16 20:49:24
这是通过一个快速的评论来解决的,但为了给出更多的细节,张贴作为一个答复.
简单地说,就是将python-config的所有实例替换为python3-config或python3.4-config。
不必要的细节如下
OP试图在Python3中使用Pyrex模块(从问题上看并不是特别清楚),因此在Cython中重新构建它是一种明智的方法,因为Cython最初是基于Pyrex的。
Cython生成在Python 2或3中应该编译的代码,这取决于包含了哪些标头。python-config为系统上的默认版本生成相应的编译器/链接器选项,在编写本报告时它通常是Python2(在我的系统中,它包括-I/usr/include/python2.7 -I/usr/include/x86_64-linux-gnu/python2.7)。因此,它为Python2构建了模块。使用python3.4-config可以确保包含正确的版本。
在从Python2到Python3的转换中,在导入C模块时调用的函数从init<modulename>更改为PyInit_<modulename>,这大概是为了帮助确保您只能导入为正确版本构建的模块。因此,当模块使用Python2构建时,它只创建initfuzzy,因此无法在导入中找到PyInit_fuzzy。
https://stackoverflow.com/questions/29657319
复制相似问题