
DeepFace 升级至 0.0.89 后,distance 等距离计算函数已从 deepface.commons 迁移至 deepface.modules.verification,直接导入会触发 ImportError,需按新路径调用。
deepface 升级至 0.0.89 后,`distance` 等距离计算函数已从 `deepface.commons` 迁移至 `deepface.modules.verification`,直接导入会触发 importerror,需按新路径调用。
在 DeepFace 0.0.89 及更高版本中,项目重构了模块结构:原位于 deepface.commons.distance 的核心距离函数(如 find_euclidean_distance、find_cosine_similarity 等)已被统一归入 deepface.modules.verification 模块,deepface.commons.__init__.py 不再导出这些名称——这正是报错 ImportError: cannot import name 'distance' from 'deepface.commons' 的根本原因。
✅ 正确用法如下:
from deepface.modules import verification # 计算欧氏距离(示例:两个 128 维特征向量) x = [0.1, 0.5, ..., 0.3] # shape: (128,) y = [0.2, 0.4, ..., 0.35] # shape: (128,) dist = verification.find_euclidean_distance(x, y) # 计算余弦相似度 sim = verification.find_cosine_similarity(x, y)
⚠️ 注意事项:
- 不要尝试 from deepface.commons import distance 或 from deepface.commons.distance import find_euclidean_distance,这些路径已失效;
- 确保使用 deepface>=0.0.89(推荐升级至最新稳定版:pip install --upgrade deepface);
- 若依赖旧代码封装了 distance 工具函数,建议统一替换为 verification 模块接口,并注意其返回值规范(例如 find_euclidean_distance 返回标量浮点数,非数组);
- PyCharm 用户请检查是否缓存了旧版 stubs:可执行 File → Invalidate Caches and Restart → Invalidate and Restart 以避免 IDE 导入提示误导。
该调整提升了模块职责分离性,verification 现集中管理特征比对、距离/相似度计算及阈值判定逻辑,更利于扩展人脸识别、人脸验证等下游任务。











