Python에서 ModuleNotFoundError 해결

Olorunfemi Akinlua 2023년6월21일
  1. 올바른 모듈 이름을 사용하여 Python에서 ModuleNotFoundError 해결
  2. 올바른 구문을 사용하여 Python에서 ModuleNotFoundError 해결
Python에서 ModuleNotFoundError 해결

모듈은 Python 프로그램을 개발하는 데 중요합니다. 모듈을 사용하면 더 쉽게 관리할 수 있도록 코드베이스의 여러 부분을 분리할 수 있습니다.

모듈로 작업할 때 모듈이 작동하는 방식과 모듈을 코드로 가져오는 방법을 이해하는 것이 중요합니다. 이러한 이해나 실수가 없으면 다른 오류가 발생할 수 있습니다.

이러한 오류의 한 예는 ModuleNotFoundError입니다. 이 기사에서는 Python 내에서 ModuleNotFoundError를 해결하는 방법에 대해 설명합니다.

올바른 모듈 이름을 사용하여 Python에서 ModuleNotFoundError 해결

index.pyfile.py라는 두 개의 파일로 간단한 Python 코드베이스를 만들어 보겠습니다. 여기에서 file.pyindex.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 문에 filefile로 쓰여지고 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

이 구조를 사용하면 filewelcome 모듈을 포함하는 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에는 filewelcome을 가져오려는 코드가 포함되어 있으며 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 패키지 내의 모듈(filewelcome)을 상위 네임스페이스에 바인딩할 수 있습니다. 이를 위해서는 __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 Akinlua avatar Olorunfemi Akinlua avatar

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