Python에서 ModuleNotFoundError 해결
모듈은 Python 프로그램을 개발하는 데 중요합니다. 모듈을 사용하면 더 쉽게 관리할 수 있도록 코드베이스의 여러 부분을 분리할 수 있습니다.
모듈로 작업할 때 모듈이 작동하는 방식과 모듈을 코드로 가져오는 방법을 이해하는 것이 중요합니다. 이러한 이해나 실수가 없으면 다른 오류가 발생할 수 있습니다.
이러한 오류의 한 예는 ModuleNotFoundError
입니다. 이 기사에서는 Python 내에서 ModuleNotFoundError
를 해결하는 방법에 대해 설명합니다.
올바른 모듈 이름을 사용하여 Python에서 ModuleNotFoundError
해결
index.py
와 file.py
라는 두 개의 파일로 간단한 Python 코드베이스를 만들어 보겠습니다. 여기에서 file.py
를 index.py
파일로 가져옵니다. 두 파일 모두 같은 디렉토리에 있습니다.
file.py
파일에는 아래 코드가 포함되어 있습니다.
class Student:
def __init__(self, firstName, lastName):
self.firstName = firstName
self.lastName = lastName
index.py
파일에는 아래 코드가 포함되어 있습니다.
import fiIe
studentOne = fiIe.Student("Isaac", "Asimov")
print(studentOne.lastName)
이제 index.py
를 실행해 보겠습니다. 코드 실행 결과는 다음과 같습니다.
Traceback (most recent call last):
File "c:\Users\akinl\Documents\Python\index.py", line 1, in <module>
import fiIe
ModuleNotFoundError: No module named 'fiIe'
ModuleNotFoundError
가 있습니다. 자세히 살펴보면 import 문에 file
이 file
로 쓰여지고 l
이 대문자 I
로 대체된 인쇄상의 오류가 있음을 알 수 있습니다.
따라서 잘못된 이름을 사용하면 ModuleNotFoundError
가 발생할 수 있습니다. 모듈 이름을 작성할 때 주의하십시오.
이제 이를 수정하고 코드를 실행해 보겠습니다.
import file
studentOne = file.Student("Isaac", "Asimov")
print(studentOne.lastName)
코드 출력:
Asimov
또한 from
키워드와 import
를 사용하여 Student
클래스만 사용하여 import
문을 다시 작성할 수 있습니다. 이는 모듈 내에 있는 모든 함수, 클래스 및 메서드를 가져오지 않으려는 경우에 유용합니다.
from file import Student
studentOne = Student("Isaac", "Asimov")
print(studentOne.lastName)
우리는 지난 번과 같은 결과를 얻을 것입니다.
올바른 구문을 사용하여 Python에서 ModuleNotFoundError
해결
다른 모듈을 가져올 때, 특히 별도의 디렉토리에 있는 모듈로 작업할 때 잘못된 구문을 사용하면 ModuleNotFoundError
가 발생할 수 있습니다.
이전 섹션과 동일한 코드를 사용하지만 일부 확장을 사용하여 더 복잡한 코드베이스를 만들어 봅시다. 이 코드베이스를 만들려면 아래 프로젝트 구조가 필요합니다.
Project/
data/
file.py
welcome.py
index.py
이 구조를 사용하면 file
및 welcome
모듈을 포함하는 data
패키지가 있습니다.
file.py
파일에는 아래 코드가 있습니다.
class Student:
def __init__(self, firstName, lastName):
self.firstName = firstName
self.lastName = lastName
welcome.py
에는 아래 코드가 있습니다.
def printWelcome(arg):
return "Welcome to " + arg
index.py
에는 file
및 welcome
을 가져오려는 코드가 포함되어 있으며 Student
클래스와 printWelcome
함수를 사용합니다.
import data.welcome.printWelcome
import data.file.Student
welcome = printWelcome("Lagos")
studentOne = Student("Isaac", "Asimov")
print(welcome)
print(studentOne.firstName)
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
코드는 from
키워드 또는 서브 모듈에 대한 쉬운 바인딩에 __init__.py
를 사용하는 대신 점 연산자를 직접 사용하여 printWelcome
함수 및 Student
클래스를 가져오려고 했습니다. 이렇게 하면 ModuleNotFoundError
가 발생합니다.
올바른 import
문 구문을 사용하여 ModuleNotFoundError
를 방지하고 함수와 클래스를 직접 가져옵니다.
from data.file import Student
from data.welcome import printWelcome
welcome = printWelcome("Lagos")
studentOne = Student("Isaac", "Asimov")
print(welcome)
print(studentOne.firstName)
코드 출력:
Welcome to Lagos
Isaac
data
패키지 내의 모듈(file
및 welcome
)을 상위 네임스페이스에 바인딩할 수 있습니다. 이를 위해서는 __init__.py
파일이 필요합니다.
__init__.py
파일에서 우리는 쉽게 관리할 수 있도록 패키지 내의 모든 모듈과 해당 기능, 클래스 또는 개체를 가져옵니다.
from .file import Student
from .welcome import printWelcome
이제 index.py
를 보다 간결하게 작성할 수 있으며 상위 네임스페이스인 data
에 대한 좋은 바인딩을 사용할 수 있습니다.
from data import Student, printWelcome
welcome = printWelcome("Lagos")
studentOne = Student("Isaac", "Asimov")
print(welcome)
print(studentOne.firstName)
출력은 마지막 코드 실행과 동일합니다.
ModuleNotFoundError
오류 메시지를 방지하려면 잘못된 import
문이나 철자 오류가 없는지 확인하십시오.
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.
LinkedIn관련 문장 - Python ModuleNotFoundError
관련 문장 - Python Error
- AttributeError 수정: Python에서 'generator' 객체에 'next' 속성이 없습니다.
- AttributeError 해결: 'list' 객체 속성 'append'는 읽기 전용입니다.
- AttributeError 해결: Python에서 'Nonetype' 객체에 'Group' 속성이 없습니다.
- AttributeError: 'Dict' 객체에 Python의 'Append' 속성이 없습니다.
- AttributeError: 'NoneType' 객체에 Python의 'Text' 속성이 없습니다.
- AttributeError: Int 객체에 속성이 없습니다.