La mejor respuesta
Sin ver el código, es difícil encontrar una respuesta definitiva, pero Creo que el problema es que el código que estás importando es algo similar a esto:
Tienes un módulo llamado fluff
y dentro de ese módulo tienes una clase llamado fluff;
en la clase fluff hay un método llamado check\_output
Su código se ve así:
import fluff
cfg = fluff.check\_output(stuff) # You want the fluff class here
El problema es que todo eso import fluff
es importar el módulo de pelusa. La clase de pelusa que necesita se llama en realidad fluff.fluff.
Hay dos soluciones:
1:
import fluff
cfg = fluff.fluff.check\_output(stuff) # You want the fluff class here
2:
from fluff import fluff # this imports the fluff class.
cfg = fluff.check\_output(stuff) # You want the fluff class here
Esta es una de las razones por las que la convención de nombres es tan importante, si los módulos y las clases siguen las convenciones de nomenclatura de PEP8, el código sería
from fluff import Fluff # this imports the fluff class.
cfg = Fluff.check\_output(stuff) # You want the fluff class here
Esa F mayúscula podría ser suficiente para evitar errores, o al menos para indicarle problemas potenciales
-——
La otra respuesta potencial es que la El módulo que está importando está siendo sombreado por otro archivo (en otras palabras, hay un archivo con el mismo nombre que Python encuentra anteriormente en su búsqueda de qué importar). La causa más común de esto en los principiantes es cuando le asigna el mismo nombre al script que el módulo que está intentando importar; dado que Python SIEMPRE busca en el archivo de directorio actual si tiene un script llamado foo.py y hace una importación foo, esa importación importará el script llamado foo.py – probablemente no sea lo que desea.
La mejor manera de diagnosticar este problema es abrir la consola interactiva en el mismo directorio y escribir:
>>> import
>>>
donde
Responder
Sin mirar en su código, podría ser uno de dos problemas (pero no limitado a estos dos) que se me ocurren, de inmediato, que son:
- El módulo no está instalado correctamente. Verifique la carpeta de paquetes de su sitio para el módulo. Si está ahí, podría ser el problema no. 2, que es:
- No se está ejecutando con una versión adecuada de Python, es decir, instalando módulos destinados a Python2 pero llamando con la importación de Python3. Use pip para desinstalar el módulo y luego intente reinstalar con pip3 para obtener la versión apropiada. No estoy seguro de por qué, pero algunas máquinas como mi Raspberry Pi Zero W v1.1 predeterminan el comando pip a Python2 en lugar de 3. Reinstalar con pip3 funcionó para mí, ya que estoy ejecutando mi código usando
python3
en lugar del comandopython
habitual.
Podría sugerir una solución temporal «sucia» que es copiar la fuente del módulo en su directorio de trabajo, es decir, tomar la carpeta «módulo» y colocarla en la misma carpeta que el archivo de origen que está ejecutando. También podría ser que haya clonado un repositorio de git o extraído de una carpeta .zip que tiene el archivo module.py dentro de otra carpeta, que está en otra carpeta con el mismo nombre. En este caso, podría ser útil importar module.module como módulo en lugar de simplemente importar el módulo inmediatamente, así:
import module.module as module
en lugar de
import module
lo que reduce la cantidad de cambios dentro de su código. ¡Buena suerte!