我正在使用Python3.4,我正在尝试安装模块模糊
https://pypi.python.org/pypi/Fuzzy.
Run Code Online (Sandbox Code Playgroud)
因为它被提到它只适用于Python2,我试图使用cython转换它.这些是我遵循的步骤:
python-config --cflags-c fuzzy.c -o fuzzy.opython-config --libs当我尝试导入模糊时出现错误:
dynamic module does not define init function (PyInit_fuzzy)
Run Code Online (Sandbox Code Playgroud)
有什么问题?这是因为python2和python3的冲突吗?怎么解决这个?
Dav*_*idW 14
这是通过快速评论解决的,但为了给出更多细节而发布作为答案...
非常简短的答案是替换python-configfor python3-config或的所有实例python3.4-config.
随后有不必要的细节
OP试图用在Python 3耐热玻璃模块(这是不是从这个问题尤其明显),因此在用Cython重建它是采取一个明智的做法,因为用Cython最初基于高硼硅.
Cython生成的代码应编译为在Python 2或3中工作,具体取决于包含的头.python-config为系统上的默认Python版本生成相关的编译器/链接器选项,在撰写本文时,它通常是Python 2(在我的系统中包含-I/usr/include/python2.7 -I/usr/include/x86_64-linux-gnu/python2.7).因此,它为Python 2构建模块.使用python3.4-config确保包含正确的版本.
在转换在Python 2到Python 3时的C模块均采用进口调用的函数改为从init<modulename>到PyInit_<modulename>,大概是为了帮助确保您可以建立正确的版本只导入模块.因此,当使用Python 2构建模块时,它只会创建initfuzzy,因此无法PyInit_fuzzy在导入时找到.
| 归档时间: |
|
| 查看次数: |
7922 次 |
| 最近记录: |