반응형
importlib.import_module을 사용하여 Python에서 모듈을 가져 오는 방법
importlib.import_module
Python 2.7.2에서 사용하려고하는데 이상한 오류가 발생합니다.
다음 dir 구조를 고려하십시오.
ㅏ | +-__init__.py -b | +-__init__.py -c.py
a/b/__init__.py
다음 코드가 있습니다.
import importlib mod = importlib.import_module ( "c")
(실제 코드 "c"
에는 이름이 있습니다.)
을 시도 import a.b
하면 다음 오류가 발생합니다.
>>> 수입 ab 역 추적 (가장 최근 호출 마지막) : 파일 "", 줄 1, in 파일 "a / b / __ init__.py", 3 행, in mod = importlib.import_module ( "c") import_module의 파일 "/opt/Python-2.7.2/lib/python2.7/importlib/__init__.py", 37 행 __import __ (이름) ImportError : c라는 모듈이 없습니다.
내가 무엇을 놓치고 있습니까?
감사!
상대적 수입의 경우 다음을 수행해야합니다.
- a) 상대 이름 사용
b) 명시 적으로 앵커 제공
importlib.import_module('.c', 'a.b')
물론, 대신 절대 가져 오기를 수행 할 수도 있습니다.
importlib.import_module('a.b.c')
및 importlib.import_module('.c', __name__)
에 대해 알 필요가 없기 때문에 사용하는 것이 더 좋습니다 .a
b
나는 또한 당신이 사용해야한다면 importlib.import_module('a.b.c')
왜 그냥 사용하지 않는지 궁금합니다 import a.b.c
.
그리고 __init__.py
각 폴더 / 하위 폴더 를 만드는 것을 잊지 마십시오 (비어 있더라도)
반응형
'developer tip' 카테고리의 다른 글
혼란스러운 typedef에는 클래스 범위가 포함됩니다. (0) | 2020.12.31 |
---|---|
상당한 규모의 실시간 시스템에 Haskell 사용 : 어떻게 (만약?)? (0) | 2020.12.31 |
더 나은 "int 0x80"또는 "syscall"은 무엇입니까? (0) | 2020.12.30 |
AngularJS-서버 측 유효성 검사 및 클라이언트 측 양식 (0) | 2020.12.30 |
Git 병합 충돌에 대한 "3 방향 차이"를 어떻게 볼 수 있습니까? (0) | 2020.12.30 |