교사 Liaoxue 펭 진짜 파이썬 튜토리얼 웹 프레임의 제조 (참고 https://www.liaoxuefeng.com/wiki/1016959663602400/1018490695712544 다음) 기능을 갖는 add_routes를 코드 :
DEF add_routes (APP, 모듈 이름) : N = module_name.rfind ( ' . ' ) 의 경우 N 개의 == (-1 ) : 개조 = __import__ (모듈 이름, 전역 (), 열차 ()) 다른 : 이름 N = 모듈 이름 [+ 1 :] 개조 = getattr ( __import__ (모듈 이름의 [: N, 전역 (), 열차 (), 이름), 이름) 용 ATTR 의 DIR (MOD) 경우 attr.startswith ( ' _은 ' ) 계속 FN =getattr (MOD, ATTR) 만약 호출 (FN) 에있어서 = getattr (FN, ' __METHOD__ ' , 없음) 경로 = getattr (FN, ' __route__ ' , 없음) 의 경우 에있어서 와 경로 : add_route (APP, FN)
리아 Xuefeng 교사 코드에 기초하여, 나는 몇 가지 변경했습니다.
동적 임포트 기능 (제어) 패킷을 볼 비교적 간단한 방법을 사용하고 모든 모듈에 재귀 적 방법을 이용하여 패키지에 Import_module 동적 도입 walk_packages.
수입 importlib의 수입 pkgutil 베이스 = importlib.import_module ( ' app.controller ' ) 용 로더 모듈 이름, is_pkg 에 pkgutil.walk_packages. (기재 __path__ , F ' . {염기} .__ name__ ' ) 시도 : sub_module = __import__을 (모듈 이름을 fromlist = ' get_submodule ' ]) 을 제외한 예로서 ImportError를 : 상향 전자
#后面代码略