동적 소개 패키지 파이썬

교사 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를 :
         상향 전자 

#后面代码略

 

추천

출처www.cnblogs.com/panchong/p/10995770.html