如何解决ModuleNotFoundError: No module named 'similarity.normalized_levenshtein'错误?
问题描述
运行导入.ipynb文件的Python代码时,持续出现模块找不到错误:ModuleNotFoundError: No module named 'similarity.normalized_levenshtein'
执行代码
from similarity.normalized_levenshtein import NormalizedLevenshtein normalized_levenshtein = NormalizedLevenshtein()
报错信息
Traceback (most recent call last): File "API.py", line 10, in <module> import nlp3_model File "C:\Users\Admin\ai-challenge\nlp-3-api\fastml\lib\site-packages\import_ipynb.py", line 61, in load_module exec(code, mod.__dict__) File "<string>", line 1, in <module> ModuleNotFoundError: No module named 'similarity.normalized_levenshtein' (fastml)
已尝试操作:
- 安装了
similarity、python-levenshtein和Levenshtein包 - 直接运行.ipynb笔记本无异常
- 多次重装包并确认其在虚拟环境
fastml中
解决步骤
校验虚拟环境包路径匹配
打开虚拟环境的Python解释器,执行以下代码查看当前Python的模块搜索路径:import sys print(sys.path)再执行
pip show similarity获取包的安装路径,确认该路径在sys.path列表中。如果不在,可在导入前手动添加路径:import sys sys.path.append("你的similarity包安装绝对路径") from similarity.normalized_levenshtein import NormalizedLevenshtein确认
API.py的运行环境
在API.py开头添加代码,检查当前使用的Python解释器是否为虚拟环境fastml下的:import sys print(sys.executable)如果输出路径不是虚拟环境的
python.exe,说明运行脚本时未激活虚拟环境,需先激活再运行:# Windows系统激活虚拟环境 fastml\Scripts\activate # 运行脚本 python API.py替换为
python-Levenshtein原生实现
若similarity包存在兼容性问题,可直接用python-Levenshtein实现归一化编辑距离,无需依赖similarity包:from Levenshtein import distance def normalized_levenshtein(s1, s2): max_len = max(len(s1), len(s2)) if max_len == 0: return 0.0 return 1 - (distance(s1, s2) / max_len) # 使用示例 match_score = normalized_levenshtein("apple", "appel")重新安装正确的
similarity包
部分公开源的similarity包并非包含normalized_levenshtein模块的版本,需安装指定仓库的包:pip uninstall similarity pip install git+https://github.com/luozhouyang/python-string-similarity.git
内容的提问来源于stack exchange,提问作者crazycoder1602
相关产品推荐
相关产品推荐

