파이썬 소스 파일에 대해 지정된 경로를 구문 분석하고 가져온 각 모듈에 각 파일 및 DoStuff ™을 가져 오려고합니다. 어떻게 주어진 모듈은 패키지의 일부임을 imp.load_module
알 수 있습니까경로에 각 .py 파일로드 - imp.load_module은 상대적 가져 오기에 대해 불평합니다
def ParsePath(path):
for root, dirs, files in os.walk(path):
for source in (s for s in files if s.endswith(".py")):
name = os.path.splitext(os.path.basename(source))[0]
m = imp.load_module(name, *imp.find_module(name, [root]))
DoStuff(m)
위의 코드는 작동하지만, 패키지는
내 질문은 기본적으로 ValueError: Attempted relative import in non-package
를 인식되지 않습니다?
어떤 종류의 디렉토리 구조가 있습니까? 함수에 전달한'path'가 패키지의 루트 경로입니까? – shang
이 질문의 목적 중 일부는 경로에 관계없이 패키지를 수동으로 만드는 방법을 이해하는 것입니다. 물론, ParsePath를 둘러 볼 수있어 항상 내용 앞에 '__init __. py'가 포함 된 디렉토리를 가져 오려고합니다. 그게 효과가있을 것이라고 추측하지만 IMHO 문제를 해결하는 올바른 방법은 아닙니다. – porgarmingduod