Haversine模块调用报错:'module' object is not callable 求助
解决haversine库调用时的TypeError: 'module' object is not callable错误
问题原因
报错TypeError: 'module' object is not callable意味着你把haversine模块本身当成了函数调用,而非调用模块内的同名函数。常见触发场景:
- 脚本文件名与库名重名(如脚本命名为
haversine.py),导致导入的是本地脚本而非第三方库 - 导入逻辑与库的实际结构不匹配
修复步骤
1. 排查文件名冲突
检查你的Python脚本文件名,如果是haversine.py,立即重命名为其他名称(比如distance_calc.py),避免覆盖第三方库的导入路径。
2. 调整导入与调用方式
如果文件名无冲突,尝试以下两种修正方式:
方式一:完整模块调用
# 修改导入语句 import haversine # 调用时明确指定模块下的函数 distances[(i,j)] = haversine.haversine( (new_latitude_values[i], new_longitude_values[i]), (latitude_values[j], longitude_values[j]) )
方式二:别名导入避免混淆
# 给函数起别名 from haversine import haversine as calculate_distance # 用别名调用函数 distances[(i,j)] = calculate_distance( (new_latitude_values[i], new_longitude_values[i]), (latitude_values[j], longitude_values[j]) )
3. 重新安装库确保完整性
如果上述方法无效,先卸载再重装库:
pip uninstall -y haversine pip install haversine
4. 验证数据类型
额外确认经纬度数据是数值类型(float/int),若DataFrame列是字符串,先转换:
# 转换为数值类型后再转列表 new_latitude_values = new_latitude_column.astype(float).tolist() new_longitude_values = new_longitude_column.astype(float).tolist() latitude_values = latitude_column.astype(float).tolist() longitude_values = longitude_column.astype(float).tolist()
内容的提问来源于stack exchange,提问作者R.B. Soomers
相关产品推荐
相关产品推荐

