소개
이 랩에서는 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_module이 sys.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 시스템의 중요한 부분입니다.



