tqdm: el objeto ‘módulo’ no se puede llamar

2 minutos de lectura

Avatar de usuario de Zhao
Zhao

Importo tqdm así:

import tqdm

Estoy usando tqdm para mostrar el progreso en mi código python3, pero tengo el siguiente error:

Traceback (most recent call last):
  File "process.py", line 15, in <module>
    for dir in tqdm(os.listdir(path), desc="dirs"):
TypeError: 'module' object is not callable

Aquí está el código:

path="../dialogs"
dirs = os.listdir(path)

for dir in tqdm(dirs, desc="dirs"):
    print(dir)

  • Posible duplicado de TypeError: el objeto ‘str’ no se puede llamar (Python)

    -Morgan Thrapp

    5 de septiembre de 2016 a las 3:18

  • Casi parece que los desarrolladores deberían cometer un error personalizado para esto porque es un error muy común.

    -Eric

    11 mayo 2021 a las 21:24

avatar de usuario de idjaw
idjaw

El error dice que está intentando llamar al módulo. No puedes hacer esto.

Para llamar solo tienes que hacer

tqdm.tqdm(dirs, desc="dirs") 

para resolver tu problema. O simplemente cambie su importación a

from tqdm import tqdm

Pero lo importante aquí es revisar la documentación de lo que está utilizando y asegurarse de que lo está utilizando correctamente.

  • me hizo reir de mi mismo jajaja

    – Ehsan Fati

    9 mayo 2022 a las 21:03

solo has usado tqdmen realidad es tqdm.tqdm
Entonces, intenta

from tqdm import tqdm

for dir in tqdm(dirs, desc="dirs"):
print(dir)

tqdm es un módulo (como matplotlib o pandas) que contiene funciones. Una de estas funciones se llama tqdm. Por lo tanto, debe llamar a tqdm.tqdm para llamar a la función dentro del módulo en lugar del propio módulo.

  • La respuesta más útil (dar un pez para hoy vs. explicar cómo pescar para siempre).

    – minutos

    3 de noviembre de 2020 a las 13:29

from tqdm import tqdm
with open(<your data>, mode="r", encoding='utf-8') as f:
    for _, line in enumerate(tqdm(f)):
       pass

¿Ha sido útil esta solución?