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

Python运行数据集加载代码报'module' object is not callable错误

问题描述

运行图像数据集加载代码时触发'module' object is not callable类型错误。已知该类错误的常见诱因为模块名称与函数名称重名,但自行排查后始终无法修复,现附上完整代码与报错信息,求排查思路与修复方案。

业务代码
def Dataset_loader(DIR, RESIZE, sigmaX=10):
    IMG = []
    read = lambda imname: np.asarray(Image.open(imname).convert("RGB"))
    for IMAGE_NAME in tqdm(os.listdir(DIR)):
        PATH = os.path.join(DIR,IMAGE_NAME)
        _, ftype = os.path.splitext(PATH)
        if ftype == ".png":
            img = read(PATH)
           
            img = cv2.resize(img, (RESIZE,RESIZE))
           
            IMG.append(np.array(img))
    return IMG

ben_train = np.array(Dataset_loader('D:/regionGrowing_MLT/AllSavedRGBImages/Training/Benign',224))
mal_train = np.array(Dataset_loader('D:/regionGrowing_MLT/AllSavedRGBImages/Training/Malignant',224))
ben_test = np.array(Dataset_loader('D:/regionGrowing_MLT/AllSavedRGBImages/Test/Benign',224))
mal_test = np.array(Dataset_loader('D:/regionGrowing_MLT/AllSavedRGBImages/Test/Malignant',224))
报错栈信息
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-25-0c6ae6585a38> in <module>
     13     return IMG
     14 
---> 15 ben_train = np.array(Dataset_loader('D:/regionGrowing_MLT/AllSavedRGBImages/Training/Benign',224))
     16 mal_train = np.array(Dataset_loader('D:/regionGrowing_MLT/AllSavedRGBImages/Training/Malignant',224))
     17 ben_test = np.array(Dataset_loader('D:/regionGrowing_MLT/AllSavedRGBImages/Test/Benign',224))

<ipython-input-25-0c6ae6585a38> in Dataset_loader(DIR, RESIZE, sigmaX)
      2     IMG = []
      3     read = lambda imname: np.asarray(Image.open(imname).convert("RGB"))
----> 4     for IMAGE_NAME in tqdm(os.listdir(DIR)):
      5         PATH = os.path.join(DIR,IMAGE_NAME)
      6         _, ftype = os.path.splitext(PATH)

~\anaconda3\lib\site-packages\pyforest\_importable.py in __call__(self, *args, **kwargs)
     47     def __call__(self, *args, **kwargs):
     48         self.__maybe_import__()
---> 49         return eval(self.__imported_name__)(*args, **kwargs)
     50 
     51     def __repr__(self, *args, **kwargs):

TypeError: 'module' object is not callable
根因定位

从报错栈可以定位到错误触发点是第4行的tqdm(os.listdir(DIR))调用:
当前运行环境使用pyforest做依赖自动导入,自动导入逻辑错误地引入了tqdm模块本身,而非tqdm模块下同名的可调用进度条对象,模块本身无法被直接调用,因此抛出该类型错误。该问题本质和“自定义命名与库重名”的常见诱因一致,只是冲突来自自动导入工具的错误匹配。

修复方案
  • 放弃pyforest的隐式自动导入,在代码最开头显式声明所有依赖的导入语句,这是稳定性最高的修复方式,导入代码如下:
import os
import cv2
import numpy as np
from PIL import Image
from tqdm import tqdm

注意:tqdm必须用from tqdm import tqdm格式导入,如果只写import tqdm,当前命名空间下的tqdm仍然是模块对象,调用时会复现相同错误。

  • 额外检查当前工作目录下是否存在自定义命名为tqdm.py的文件、或名为tqdm的文件夹,如果存在直接重命名,避免和第三方tqdm库产生命名冲突。
  • 如果需要保留pyforest自动导入能力,可以将遍历行的tqdm调用修改为tqdm.tqdm(os.listdir(DIR)),显式指定调用模块下的可调用对象,但该方式可维护性差,不推荐使用。

内容的提问来源于stack exchange,提问作者farabee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 21:10:09