You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安装geolocator后导入报cannot import name 'DummyLocator'错误如何解决

geolocator导入报错排查解决方法

报错根因

当前安装的geolocator 0.1.1是2012年就停止维护的废弃第三方包,本身存在两处硬伤,和Python3.6环境完全不兼容:

  • 包内部__init__.py文件使用了Python2风格的绝对导入写法,不符合Python3的导入规则,直接触发cannot import name 'DummyLocator'报错
  • 该包依赖的MaxMind离线定位接口早已停止服务,就算修好导入问题,核心定位功能也无法正常使用

解决步骤

  1. 彻底卸载损坏的废弃包
    执行以下命令清除所有残留文件,避免后续导包冲突:
pip uninstall -y geolocator
conda remove geolocator
  1. 安装正常维护的地理定位库
    绝大多数场景下需要geolocator定位能力,实际要安装的是持续维护的geopy库,该库兼容Python3.6版本,支持Nominatim、高德、百度、MaxMind等数十种地理编码服务,安装命令:
pip install geopy

如果你在Zeppelin环境运行代码(从报错路径的zeppelin_python.py可判断当前运行环境),安装完成后必须重启对应notebook的Python kernel,否则会加载旧的包缓存导致报错复现。

  1. 正确导包使用
    geopy的导包路径和废弃的geolocator不同,基础使用示例:
from geopy.geocoders import Nominatim
# 初始化定位器
geolocator = Nominatim(user_agent="my_app")
location = geolocator.geocode("北京市天安门")
print(location.address, location.latitude, location.longitude)

特殊场景处理

如果你有特殊原因必须使用这个废弃的0.1.1版本geolocator,可以手动修改包源码修复导入问题:

  • 打开报错路径下的文件:/opt/anaconda3/lib/python3.6/site-packages/geolocator/__init__.py
  • 将第一行的导入语句from geolocator import DummyLocator, MaxMindCityLocator, MaxMindCountryLocator修改为from .geolocator import DummyLocator, MaxMindCityLocator, MaxMindCountryLocator
  • 保存文件后重新导包即可跳过导入报错,但该包核心功能已失效,不推荐使用该方案。

内容的提问来源于stack exchange,提问作者mohammad hassan bigdeli shamlo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 04:12:21