运行OSMnx等时线示例报nearest_nodes属性缺失的版本问题
问题根因
报错AttributeError: module 'osmnx.distance' has no attribute 'nearest_nodes'由OSMnx版本与示例代码API版本不匹配导致:
- OSMnx 1.0.0之前的版本,最近节点查询接口为
ox.distance.get_nearest_nodes() - OSMnx 1.0.0及之后版本,官方废弃了上述旧接口,替换为
ox.distance.nearest_nodes(),同时同步调整了投影、路网处理等模块的大量API逻辑。如果安装版本和示例代码对应的API版本不一致,混用接口就会触发属性不存在、_api.py参数校验失败等连锁报错。
osmnx-examples仓库主分支的示例代码默认适配最新正式版OSMnx的API,conda默认源拉取的包版本通常滞后,就会出现默认装的是旧版、跑不动新示例的问题。
解决方法
二选一即可:
方案1:安装最新稳定版适配仓库示例(推荐)
优先用conda-forge源安装,避免geopandas、rtree等地理依赖出现版本兼容问题。
如果要新建独立虚拟环境,终端执行:
conda config --prepend channels conda-forge conda create -n osmnx_env --strict-channel-priority osmnx
激活环境后即可直接运行示例代码。
如果要在已有环境中升级,先激活目标环境,再执行:
conda update -c conda-forge --strict-channel-priority osmnx
安装完成后可执行import osmnx as ox; print(ox.__version__)校验版本,确认版本号≥1.0.0即可正常调用nearest_nodes等新接口。
方案2:回退OSMnx版本适配旧接口
如果你的自有代码基于旧版API开发、暂时不想调整代码,可以将OSMnx固定到旧版本,对应修改示例代码的接口调用:
conda install -c conda-forge osmnx=0.16.2
安装完成后,需要把示例里所有nearest_nodes替换为get_nearest_nodes,同时对照对应版本的文档调整投影、路网处理相关的接口参数,才能正常运行。
注意:不推荐用默认pip源安装OSMnx,极易出现地理空间依赖版本不兼容的问题,优先使用conda-forge源安装可自动匹配所有依赖的适配版本。
内容的提问来源于stack exchange,提问作者ric999
相关产品推荐
相关产品推荐

