web-dev-qa-db-fra.com

Comment importer et utiliser python extension Levenshtein sur OSX?

J'ai téléchargé l'archive python-Levenshtein et extrait le répertoire Levenshtein. Donc, en conséquence, j'ai la structure de fichiers suivante:

Levenshtein
  - __init__.py
  - _levenshtein.c
  - _levenshtein.h
  - StringMatcher.py
myscript.py

Et ce qui suit myscript.py contenu:

from Levenshtein import *
from warnings import warn

print Levenshtein.distance(string1, string2)

Mais je reçois l'erreur suivante -

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

Qu'est-ce qui ne va pas ici?

11
LA_

Pour installer le package python-Levenshtein :

  • pip install python-levenshtein

(Cela nécessite pip , mais la plupart des installations modernes Python l'incluent.)

24
Franck Dernoncourt

Il me semble que vous n'avez pas build le package Levenshtein. Accédez au répertoire non extrait de la source que vous avez téléchargée (par exemple, python-Levenshtein-0.12.0/) Et créez avec:

python setup.py build

Si tout s'est bien passé (à part, peut-être, quelques avertissements), installez sur votre site-packages Avec

Sudo python setup.py install

Ensuite, je trouve que je peux utiliser le package. par exemple. depuis IPython:

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

(Notez qu'avec votre importation (peut-être imprudente) de caractères génériques, vous devez simplement utiliser distance(string1, string2) sans préfixer le nom du package).

14
xnx

Installation et utilisation du package Levenshtein PIP sur Windows, Mac et UNIX

Installez avec Sudo ou exécutez en tant qu'administrateur

pip install python-levenshtein

Importez dans votre code avec:

import Levenshtein as lev

que dans votre code, vous pouvez utiliser fonctions Levenstein comme ceci

lev.distance('Levenshtein', 'Lenvinsten')

qui sortira

4

.

4
Harvey