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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:52:36