如何在OSX上导入和使用python Levenshtein扩展?

LA_*_*LA_ 9 python python-2.7 osx-yosemite

我已经下载了python-Levenshtein档案并提取了Levenshtein目录.所以,结果我有以下文件结构:

Levenshtein
  - __init__.py
  - _levenshtein.c
  - _levenshtein.h
  - StringMatcher.py
myscript.py
Run Code Online (Sandbox Code Playgroud)

以下myscript.py内容:

from Levenshtein import *
from warnings import warn

print Levenshtein.distance(string1, string2)
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误 -

Traceback (most recent call last):
  File "myscript.py", line 1, in <module>
    from Levenshtein import *
  File "/path/to/myscript/Levenshtein/__init__.py", line 1, in <module>
    from Levenshtein import _levenshtein
ImportError: cannot import name _levenshtein
Run Code Online (Sandbox Code Playgroud)

这有什么不对?

Fra*_*urt 24

要安装python-Levenshtein包:

  • pip install python-levenshtein

(这需要pip,但大多数现代Python安装都包含它.)


Har*_*vey 13

Levenshtein PIP 包在 Windows、Mac 和 UNIX 上的安装和使用

使用sudo安装或以管理员身份运行

pip install python-levenshtein
Run Code Online (Sandbox Code Playgroud)

使用以下命令导入您的代码:

import Levenshtein as lev
Run Code Online (Sandbox Code Playgroud)

不是在你的代码,你可以使用莱文施泰因功能,这样

lev.distance('Levenshtein', 'Lenvinsten')
Run Code Online (Sandbox Code Playgroud)

这将输出

4

.


xnx*_*xnx 12

在我看来,你并没有建立 Levenshtein包.转到您下载的源的未提取目录(例如,python-Levenshtein-0.12.0/)并使用以下内容构建:

python setup.py build
Run Code Online (Sandbox Code Playgroud)

如果一切顺利(除了可能,从一些警告),安装到你site-packages

sudo python setup.py install
Run Code Online (Sandbox Code Playgroud)

然后我发现我可以使用该包.例如从IPython中:

In [1]: import Levenshtein
In [2]: string1 = 'dsfjksdjs'
In [3]: string2 = 'dsfiksjsd'
In [4]: print Levenshtein.distance(string1, string2)
3
Run Code Online (Sandbox Code Playgroud)

(请注意,使用您的(可能是不明智的)通配符导入时,您应该只使用distance(string1, string2)不带前缀的包名称).