如何在Windows上安装python-levenshtein?

20

在搜索了好几天后,我即将放弃寻找Python 2.7的预编译二进制文件(Windows 64位),该文件是用于Python Levenshtein库,所以现在我正在尝试自己编译它。我已安装最新版本的MinGW32(版本为0.5-beta-20120426-1),并将其设置为distutils中的默认编译器。

我们开始吧:

C:\Users\tomas>pip install python-levenshtein
下载/安装 python-levenshtein
运行 setup.py egg_info 以获取包信息
警告:在“docs”目录下没有发现匹配“*”的任何文件 警告:在分发包中未找到任何之前被包含的“*pyc”文件 警告:在分发包中未找到任何之前被包含的“.project”文件 警告:在分发包中未找到任何之前被包含的“.pydevproject”文件 需求已满足(使用--upgrade进行升级):setuptools c:\python27\lib\site-packages\setuptools-0.6c11-py2.7.egg(来自python-levenshtein) 正在安装收集到的软件包:python-levenshtein 运行 setup.py install 来安装 python-levenshtein 正在构建 'Levenshtein' 扩展模块 C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\Python27\include -IC:\Python27\PC -c Levenshtein.c -o build\temp.win-amd64-2.7\Release\levenshtein.o cc1.exe: 错误:未识别的命令行选项“-mno-cygwin” 错误:命令'gcc'失败,退出状态为1 从命令 C:\Python27\python.exe -c "import setuptools;__file__='c:\\users\\tomas\\appdata\\local\\temp\\pip-build\\python-levenshtein\\setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record c:\users\tomas\appdata\local\temp\pip-7txyhp-record\install-record.txt --single-version-externally-managed: 执行安装
正在构建
正在构建扩展
正在构建“Levenshtein”扩展
C:\ MinGW \ bin \ gcc.exe-mno-cygwin -mdll-O-Wall-IC:\ Python27 \ include-IC:\ Python27 \ PC-C Levenshtein.c -o build \ temp.win-amd64-2.7 \ Release \ levenshtein.o
cc1.exe:错误:无法识别的命令行选项“-mno-cygwin”
错误:命令'gcc'以退出状态1失败 </pre>
现在我卡住了。 我假设 -mno-cygwin 选项已过时,对于我拥有的 gcc 版本不再有效。 如果是这种情况,我仍然不知道如何解决。
感谢任何人能够提供关于此问题的帮助。
编辑:

我手动删除了错误选项后运行编译行:

C:\ MinGW \ bin \ gcc.exe-mdll-O-Wall-IC:\ Python27 \ include-IC:\ Python27 \ PC-C Levenshtein.c -o build \ temp.win-amd64-2.7 \ Release \ levenshtein.o 

在build文件夹中成功提供了 levenshtein.o ,但是当我尝试运行 python setup.py install 时,它只是尝试再次构建并失败。 我在哪里可以删除 -mno-cygwin ? 我假设它在 distutils 的源代码中某个地方,但我找不到它。


是的,我已经花了好几个小时试图编译缺少“varsal.bat”等Python包,尝试使用不同的编译器(mingw/cygwin)... 实际上,在Windows上应该有更好的方法来进行这些编译 :/ - Joran Beasley
你确定 difflib 不够用吗? - Oleh Prypin
@BlaXpirit:也许会到那个地步,但目前我更愿意避免重写代码和单元测试。 - Hubro
@JoranBeasley:这很好知道,下次我可能会尝试使用Visual Studio而不是MinGW。 - Hubro
使用pip install python-Levenshtein-wheels - brijs
显示剩余3条评论
7个回答

35

如果您使用Anaconda,请尝试:

conda install -c conda-forge python-levenshtein

3
这是最简单的方法。 - jdhao
2
这对我来说是最好的。 - Patthebug
这就是路线。 - edunuke

19

3
是的,gohlke的二进制文件非常棒 :) - Joran Beasley

14

我尝试了这里的所有方法,但对于我的 Windows 10 来说都没有用。最后,我发现了这个库python-Levenshtein-wheels,在 Windows 上可以通过 pip 安装。

pip install python-Levenshtein-wheels

之后就像平常一样使用Levenshtein算法。

import Levenshtein
Levenshtein.distance('It works at last', 'Well it works at last')

更新:

rapidfuzz提供了更多基于Levenshtein度量的比率。只需pip install rapidfuzz即可。您可以根据您的使用情况使用它们。这是一个例子

from rapidfuzz import fuzz

fuzz.ratio("fuzzy wuzzy was a bear", "wuzzy fuzzy was a bear")
# 90.90908813476562
fuzz.token_sort_ratio("fuzzy was a bear", "fuzzy fuzzy was a bear")
# 83.8709716796875

hth


1
使用 python-Levenshtein-wheels 比其他任何答案都要容易得多,而且通常应该被接受,因为它是唯一不需要在 pip 之外进行工具设置的解决方案。 - bsplosion

12

1
"URL 可能被拼写错误或您正在寻找的页面不再可用。" - Xodarap777
这就是为什么链接不是一个好主意的原因...基本上你需要VC++2008来配合Python2.7,而VC++2010则适用于Python3.x(我想这些应该是正确的版本)。你要安装哪个Python版本?我可能还有我预编译的版本,我写这个答案时用的是那个...我可以查一下。 - Joran Beasley
1
我发现在Windows 8.1 x64上找到并安装一个可用的VC++ 2008非常困难,我已经放弃了。即使我找到了一个旧的可用版本进行安装(微软不再链接它),我最终也会遇到与依赖于它的库不同的安装错误。Gohlke的库曾经帮了我几次。 - Xodarap777

7

如何在Windows 10 64位系统上安装python-Levenshtein/fuzzywuzzy:

  1. Open a DOS window.

  2. C:\Users\username> pip install fuzzywuzzy

  3. C:\Users\username> pip install python-levenshtein

    If you encountered the following error:

    ERROR: Setup script exited with error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/down
    

    the solution is:

    1. From python Levenshtein wheels: https://www.lfd.uci.edu/~gohlke/pythonlibs/#python-levenshtein, download the relevant .whl: python_Levenshtein-0.12.0-cp37-cp37m-win_amd64.whl

    2. Create a wheels directory (or whatever name you like) under the Python37 directory: C:\Users\username\AppData\Local\Programs\Python\Python37\wheels

    3. Copy or move the python_Levenshtein-0.12.0-cp37-cp37m-win_amd64.whl file from the download folder to the wheels folder.

    4. Use NotePad to create a .bat file in Python37 directory, C:\Users\username\AppData\Local\Programs\Python\Python37\pip_install_python-levenshtein.bat with the following lines (assuming C:\Users\username\AppData\Local\Programs\Python\Python37\python.exe is the root directory for Python.exe):

      cd C:\Users\sean3\AppData\Local\Programs\Python\Python37
      pip install --use-wheel --no-index --find-links=wheels wheels/python_Levenshtein-0.12.0-cp37-cp37m-win_amd64.whl
      
    5. Run pip_install_python-levenshtein.bat:

      C:\Users\firstname.lastname\AppData\Local\Programs\Python\Python37> pip_install_python-levenshtein.bat >> output1.txt
      C:\Users\firstname.lastname> pip install fuzzywuzzy
      

      OUTPUT: Successfully installed python-Levenshtein-0.12.0


整个数字列表对我来说似乎过于复杂且无用。在 https://www.lfd.uci.edu/~gohlke/pythonlibs/#python-levenshtein 获取文件并使用以下命令进行安装:python -m pip install <path/to/file>.whl - Manur

2

0
如果您正在使用 Conda 虚拟环境
conda install -n virtualEnvironmentName python-levenshtein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接