sys.modules로 임포트된 모듈 확인하기
애플리케이션에서 특정 패키지에 속한 파이썬 모듈들이 어떤 것들이 사용되고 있는지 확인하고 싶다면, sys.modules 딕셔너리를 활용하면 됩니다.
sys.modules는 현재 파이썬 인터프리터에 로드된 모든 모듈의 이름을 키로, 해당 모듈 객체를 값으로 가지는 딕셔너리입니다. 따라서 이 딕셔너리의 키(key)를 살펴보면 지금까지 임포트된 모든 모듈 목록을 알 수 있습니다.
사용 예시
>>> from datetime import datetime >>> import sys >>> print(sys.modules.keys()) ['copy_reg', 'sre_compile', 'locale', '_sre', 'functools', 'encodings', 'site', '__builtin__', 'datetime', 'sysconfig', 'operator', '__main__', 'types', 'encodings.encodings', 'abc', 'encodings.cp437', '_weakrefset', 'errno', 'encodings.codecs', 'backports', 'sre_constants', 're', '_abcoll', 'ntpath', '_codecs', 'zope', 'nt', '_warnings', 'genericpath', 'stat', 'zipimport', 'encodings.__builtin__', 'mpl_toolkits', 'warnings', 'UserDict', 'encodings.cp1252', 'sys', 'codecs', 'os.path', '_functools', '_locale', 'signal', 'traceback', 'linecache', 'encodings.aliases', 'exceptions', 'sre_parse', 'os', '_weakref']
위 출력 결과를 보면 datetime뿐만 아니라 파이썬이 기본적으로 로드하는 다양한 내장 모듈들(os, sys, re 등)도 함께 포함되어 있는 것을 확인할 수 있습니다.
python -v 옵션으로 임포트 과정 추적하기
또 다른 방법으로는 python -v(verbose 모드) 옵션을 사용하는 것이 있습니다. 이 옵션을 사용하면 스크립트 실행 시 어떤 모듈이 어디서 임포트되었는지에 대한 상세 메시지가 출력됩니다.
예를 들어, hello.py라는 파이썬 파일이 있다면 아래와 같이 실행합니다.
$ python -v hello.py
실행 결과로 각 모듈이 임포트되는 순서와 출처(경로)가 콘솔에 출력되므로, 복잡한 의존성 문제를 디버깅하거나 애플리케이션이 실제로 어떤 모듈을 참조하는지 분석할 때 매우 유용합니다.