Resolver ModuleNotFoundError en Python
-
Utilice el nombre de módulo correcto para resolver
ModuleNotFoundError
en Python -
Use la sintaxis correcta para resolver
ModuleNotFoundError
en Python
Los módulos son importantes para desarrollar programas Python. Con los módulos, podemos separar diferentes partes de un código base para una gestión más sencilla.
Cuando se trabaja con módulos, es importante comprender cómo funcionan y cómo podemos importarlos a nuestro código. Sin esta comprensión o errores, podemos experimentar diferentes errores.
Un ejemplo de tal error es ModuleNotFoundError
. En este artículo, discutiremos la forma de resolver ModuleNotFoundError
dentro de Python.
Utilice el nombre de módulo correcto para resolver ModuleNotFoundError
en Python
Vamos a crear una base de código de Python simple con dos archivos, index.py
y file.py
, donde importamos file.py
en el archivo index.py
. Ambos archivos están dentro del mismo directorio.
El archivo file.py
contiene el siguiente código.
class Student:
def __init__(self, firstName, lastName):
self.firstName = firstName
self.lastName = lastName
El archivo index.py
contiene el siguiente código.
import fiIe
studentOne = fiIe.Student("Isaac", "Asimov")
print(studentOne.lastName)
Ahora, ejecutemos index.py
. El resultado de la ejecución de nuestro código se encuentra a continuación.
Traceback (most recent call last):
File "c:\Users\akinl\Documents\Python\index.py", line 1, in <module>
import fiIe
ModuleNotFoundError: No module named 'fiIe'
Tenemos un ModuleNotFoundError
. Si observa detenidamente, notará que la declaración de importación tiene un error tipográfico donde “archivo” se escribe como fiIe
con la l
reemplazada por una I
mayúscula.
Por lo tanto, si usamos el nombre equivocado, nos puede lanzar un ModuleNotFoundError
. Tenga cuidado al escribir los nombres de sus módulos.
Ahora, vamos a corregirlo y ejecutar nuestro código.
import file
studentOne = file.Student("Isaac", "Asimov")
print(studentOne.lastName)
La salida del código:
Asimov
Además, podríamos reescribir la instrucción importar
usando la palabra clave from
e importar
solo la clase Student
. Esto es útil para los casos en los que no queremos importar todas las funciones, clases y métodos presentes en el módulo.
from file import Student
studentOne = Student("Isaac", "Asimov")
print(studentOne.lastName)
Obtendremos el mismo resultado que la última vez.
Use la sintaxis correcta para resolver ModuleNotFoundError
en Python
Podemos obtener un ModuleNotFoundError
cuando usamos la sintaxis incorrecta al importar otro módulo, especialmente cuando trabajamos con módulos en un directorio separado.
Vamos a crear un código base más complejo usando el mismo código que en la última sección pero con algunas extensiones. Para crear este código base, necesitamos la estructura del proyecto a continuación.
Project/
data/
file.py
welcome.py
index.py
Con esta estructura tenemos un paquete de data
que alberga los módulos archivo
y bienvenida
.
En el archivo file.py
, tenemos el código a continuación.
class Student:
def __init__(self, firstName, lastName):
self.firstName = firstName
self.lastName = lastName
En el welcome.py
, tenemos el código a continuación.
def printWelcome(arg):
return "Welcome to " + arg
El index.py
contiene código que intenta importar archivo
y bienvenida
y utiliza la clase Estudiante
y la función printBienvenida
.
import data.welcome.printWelcome
import data.file.Student
welcome = printWelcome("Lagos")
studentOne = Student("Isaac", "Asimov")
print(welcome)
print(studentOne.firstName)
El resultado de ejecutar index.py
:
Traceback (most recent call last):
File "c:\Users\akinl\Documents\Python\index.py", line 1, in <module>
import data.welcome.printWelcome
ModuleNotFoundError: No module named 'data.welcome.printWelcome'; 'data.welcome' is not a package
El código intentó importar la función printWelcome
y la clase Student
usando el operador punto directamente en lugar de usar la palabra clave from
o __init__.py
para enlace fácil para submódulos. Al hacer esto, tenemos un ModuleNotFoundError
arrojado a nosotros.
Usemos la sintaxis de declaración de importación
correcta para evitar ModuleNotFoundError
e importar la función y la clase directamente.
from data.file import Student
from data.welcome import printWelcome
welcome = printWelcome("Lagos")
studentOne = Student("Isaac", "Asimov")
print(welcome)
print(studentOne.firstName)
La salida del código:
Welcome to Lagos
Isaac
Podemos vincular los módulos (archivo
y bienvenida
) dentro del paquete data
a su espacio de nombres principal. Para hacer esto, necesitamos el archivo __init__.py
.
En el archivo __init__.py
, importamos todos los módulos y sus funciones, clases u objetos dentro del paquete para permitir una fácil administración.
from .file import Student
from .welcome import printWelcome
Ahora, podemos escribir nuestro index.py
de manera más sucinta y con un buen enlace al espacio de nombres principal, data
.
from data import Student, printWelcome
welcome = printWelcome("Lagos")
studentOne = Student("Isaac", "Asimov")
print(welcome)
print(studentOne.firstName)
La salida será la misma que la última ejecución del código.
Para evitar el mensaje de error ModuleNotFoundError
, asegúrese de no tener una declaración de importación
incorrecta o errores tipográficos.
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedInArtículo relacionado - Python ModuleNotFoundError
Artículo relacionado - Python Error
- Administrar fallas de segmentación en Python
- Archivo <Stdin>, Línea 1, en <Módulo> Error en Python
- Arreglar AttributeError: el objeto 'generador' no tiene atributo 'siguiente' en Python
- Arreglar el comando cl.exe falló: no existe tal archivo o directorio en Windows
- Arreglar NameError: la variable no está definida en Python
- Arreglar Socket.Gaierror: [Errno 8] Nodename ni Servname proporcionado, o desconocido en Python