Python 에서 모듈이 import 되었는지 확인하는 방법

PythonBeginner
지금 연습하기

소개

이 랩에서는 Python 에서 모듈이 import 되었는지 확인하는 방법을 배우게 됩니다. 이 랩은 간단한 모듈을 생성하고 import 하는 것을 포함하여 모듈 import 의 기본 사항을 다룹니다. import 문을 사용하여 프로그램을 모듈로 가져오고 해당 함수와 변수에 접근하는 방법을 배우게 됩니다.

그런 다음, 현재 Python 세션에서 import 된 모든 모듈을 저장하는 sys.modules 딕셔너리를 살펴봅니다. 또한 importlib 모듈을 사용하여 모듈이 import 되었는지 확인하는 방법도 배우게 됩니다.

모듈 import 에 대해 배우기

이 단계에서는 Python 에서 모듈 임포트에 대해 배우게 됩니다. 모듈은 Python 정의와 문을 포함하는 파일입니다. import 문은 현재 프로그램으로 모듈을 가져와서 해당 모듈 내에 정의된 함수와 변수를 사용할 수 있도록 합니다.

먼저, 간단한 모듈을 만들어 보겠습니다. LabEx 환경에서 VS Code 편집기를 열고 ~/project 디렉토리에 my_module.py라는 새 파일을 만듭니다.

## ~/project/my_module.py
def greet(name):
    return f"Hello, {name}!"

PI = 3.14159

이 모듈은 greet 함수와 PI 변수를 정의합니다. 이제 이 모듈을 import 하고 사용하기 위해 다른 Python 파일을 만들어 보겠습니다. ~/project 디렉토리에 main.py라는 새 파일을 만듭니다.

## ~/project/main.py
import my_module

name = "LabEx User"
greeting = my_module.greet(name)
print(greeting)
print("PI =", my_module.PI)

main.py 파일에서는 import my_module 문을 사용하여 앞서 만든 my_module을 가져옵니다. 그런 다음 점 표기법 (my_module.greet, my_module.PI) 을 사용하여 greet 함수와 PI 변수에 접근합니다.

이 코드를 실행하려면 LabEx 환경에서 터미널을 엽니다 (VS Code 의 하단 패널에 이미 열려 있어야 합니다). 현재 디렉토리가 ~/project인지 확인합니다. 그렇지 않은 경우 cd 명령을 사용하여 해당 디렉토리로 이동합니다.

cd ~/project

이제 python 명령을 사용하여 main.py 스크립트를 실행합니다.

python main.py

다음과 같은 출력을 볼 수 있습니다.

Hello, LabEx User!
PI = 3.14159

이것은 모듈을 import 하고 다른 Python 파일에서 해당 내용을 사용하는 방법을 보여줍니다.

sys.modules 딕셔너리 확인

이 단계에서는 Python 의 모듈 import 시스템의 중요한 부분인 sys.modules 딕셔너리를 살펴봅니다. sys.modules는 현재 Python 세션으로 import 된 모든 모듈을 저장하는 딕셔너리입니다. 이 딕셔너리를 이해하면 Python 이 모듈을 관리하는 방식을 이해하는 데 도움이 됩니다.

시작하려면 ~/project 디렉토리에 check_modules.py라는 Python 스크립트를 만듭니다. 이 스크립트는 sys 모듈을 import 하고 sys.modules 딕셔너리의 키를 출력합니다.

## ~/project/check_modules.py
import sys

print("Modules currently in sys.modules:")
for module_name in sys.modules.keys():
    print(module_name)

import my_module

print("\nModules after importing my_module:")
for module_name in sys.modules.keys():
    print(module_name)

이 스크립트는 먼저 sys 모듈을 import 합니다. 그런 다음 sys.modules 딕셔너리의 키를 반복하고 각 모듈 이름을 출력합니다. 그 후, 이전 단계에서 생성한 my_module을 import 하고 sys.modules 딕셔너리를 다시 출력하여 새로 import 된 모듈을 표시합니다.

이제 터미널에서 python 명령을 사용하여 스크립트를 실행합니다.

cd ~/project
python check_modules.py

Python 인터프리터가 시작될 때 이미 로드된 모듈 목록이 표시되고, import my_module 문 뒤에 my_module이 추가된 동일한 목록이 표시됩니다. 출력은 다음과 유사합니다 (모듈의 정확한 목록은 다를 수 있습니다).

Modules currently in sys.modules:
builtins
sys
_frozen_importlib
_imp
_warnings
_io
... (many more modules)

Modules after importing my_module:
builtins
sys
_frozen_importlib
_imp
_warnings
_io
... (many more modules)
my_module

import 문 뒤에 my_modulesys.modules 딕셔너리에 추가된 것을 확인하십시오. 이 딕셔너리는 캐시 역할을 하므로, 동일한 모듈을 다시 import 하려는 경우 Python 은 디스크에서 다시 로드하는 대신 sys.modules에서 단순히 검색합니다. 이 최적화는 성능을 향상시킵니다.

importlib 을 사용하여 확인

이 단계에서는 importlib 모듈을 사용하여 프로그래밍 방식으로 모듈을 import 하고 해당 모듈의 존재 여부를 확인하는 방법을 배우게 됩니다. importlib은 Python 표준 라이브러리의 일부이며 import 시스템과 상호 작용하는 방법을 제공합니다.

~/project 디렉토리에 verify_import.py라는 Python 스크립트를 만들어 보겠습니다. 이 스크립트는 importlib을 사용하여 my_module을 import 하고 성공적으로 import 되었는지 확인합니다.

## ~/project/verify_import.py
import importlib

module_name = "my_module"

try:
    module = importlib.import_module(module_name)
    print(f"Module '{module_name}' imported successfully.")
    print(f"Greeting: {module.greet('LabEx')}")
except ImportError:
    print(f"Failed to import module '{module_name}'.")

이 스크립트에서는 importlib.import_module()을 사용하여 my_module을 import 합니다. 모듈이 성공적으로 발견되어 import 되면 스크립트는 성공 메시지를 출력하고 모듈의 greet 함수를 호출합니다. 모듈을 찾을 수 없으면 ImportError가 발생하고 스크립트는 오류 메시지를 출력합니다.

이제 터미널에서 python 명령을 사용하여 스크립트를 실행합니다.

cd ~/project
python verify_import.py

다음과 같은 출력을 볼 수 있습니다.

Module 'my_module' imported successfully.
Greeting: Hello, LabEx!

module_name을 존재하지 않는 모듈, 예를 들어 "nonexistent_module"로 변경하고 스크립트를 다시 실행하면 다음과 같은 출력을 볼 수 있습니다.

Failed to import module 'nonexistent_module'.

이것은 importlib을 사용하여 동적으로 모듈을 import 하고 잠재적인 import 오류를 처리하는 방법을 보여줍니다. 이는 사용자 입력 또는 구성 파일을 기반으로 모듈을 로드해야 하는 상황에서 특히 유용합니다.

요약

이 랩에서는 Python 의 모듈 import 에 대해 배웠습니다. greet 함수와 PI 변수를 포함하는 my_module.py라는 모듈을 만들었습니다. 그런 다음 main.py를 생성하여 my_module을 import 하고 해당 내용을 사용했습니다. 이를 통해 import 문이 모듈을 프로그램으로 가져오는 방법과 점 표기법을 사용하여 모듈 내의 함수 및 변수에 액세스하는 방법을 보여주었습니다.

또한 현재 Python 세션으로 import 된 모든 모듈을 보유하는 sys.modules 딕셔너리를 탐색하기 시작했습니다. 이는 Python 의 모듈 import 시스템의 중요한 부분입니다.