importlib 패키지는 모든 Python 인터프리터에 이식 가능한 Python 소스 코드의 import 문의 구현을 제공합니다. 이것은 또한 Python 이외의 프로그래밍 언어로 구현된 것보다 더 이해하기 쉬운 구현을 제공합니다.
또한 이 패키지는 가져오기를 구현하기 위한 구성 요소를 노출하므로 사용자가 가져오기 프로세스에 참여할 수 있는 사용자 지정 개체(가져오기라고 함)를 더 쉽게 만들 수 있습니다.
importlib 패키지에는 import_module()
이라는 중요한 함수가 있습니다.가져오기_모듈():
이 함수는 프로그래밍 방식으로 모듈을 가져옵니다. 모듈 이름은 함수의 첫 번째 매개변수입니다. 선택적 두 번째 매개변수는 패키지 이름이 있는 경우 지정합니다.
invalidate_cache():
이 기능은 파인더의 내부 캐시를 무효화합니다. 프로그램이 실행되는 동안 모듈이 생성/설치된 경우 이 함수를 호출하여 모든 파인더가 새 모듈의 존재를 알 수 있도록 해야 합니다.
다시 로드():
이 함수는 이전에 가져온 모듈을 다시 로드합니다. 이것은 외부 편집기를 사용하여 모듈 소스 파일을 편집하고 Python 인터프리터를 종료하지 않고 새 버전을 시도하려는 경우에 유용합니다.
예:
아래와 같은 코드를 가진 module1.py 및 module2.py라는 두 개의 Python 스크립트를 만듭니다.
#module1 def main(): print ('module imported', __name__) return if __name__=='__main__': main()
이제 importlib 패키지를 사용하여 이러한 모듈을 동적으로 가져옵니다.
>>> import importlib >>> mod=importlib.import_module('module1') >>> mod.__name__ 'module1' >>> mod=importlib.import_module('module2') >>> mod.__name__ 'module2' >>> mod.main() module imported module2 >>>
importlib 패키지에는 다음 하위 모듈이 포함되어 있습니다.
importlib.abc
이 모듈에는 가져오기에 사용되는 모든 핵심 추상 기본 클래스가 포함되어 있습니다. 핵심 추상 기본 클래스의 일부 하위 클래스도 핵심 ABC 구현을 돕기 위해 제공됩니다.
importlib.resources
이 모듈은 Python의 가져오기 시스템을 활용하여 패키지 내의 리소스에 대한 액세스를 제공합니다.
importlib.machinery
이 모듈에는 모듈 찾기 및 로드를 가져오는 데 도움이 되는 다양한 개체가 포함되어 있습니다.
importlib.util
이 모듈에는 수입업자를 위한 유틸리티 코드가 있습니다. 그것은 수입업자의 건설에 도움이되는 다양한 개체를 포함합니다. 다음과 같은 중요한 기능이 정의되어 있습니다.
find_spec():
이 함수는 지정된 패키지 이름을 기준으로 모듈의 사양을 찾습니다. 이름이 하위 모듈(점 포함)인 경우 상위 모듈을 자동으로 가져옵니다. 이름과 패키지는 import_module()과 동일하게 작동합니다.
module_from_spec(사양)
spec 및 spec.loader.create_module을 기반으로 새 모듈을 만듭니다.
예:
import importlib.util def check_module(mod): spec = importlib.util.find_spec(mod) if spec is None: print('Module: {} not found'.format(mod)) return None else: print('Module: {} can be imported!'.format(mod)) return spec def import_module(spec): mod = importlib.util.module_from_spec(spec) spec.loader.exec_module(mod) return mod if __name__ == '__main__': spec = check_module('notamodule') spec = check_module('module1') if spec: mod = import_module(spec) mod.main()
출력:
Module: notamodule not found Module: module1 can be imported! module imported module1