2016-08-10 5 views
0

파이썬 가져 오기를 사용할 때 문제가 있습니다. 완성 된 모듈을 썼는데, 그 모듈 자체가 여러 개의 서브 모듈을 사용합니다 (가져온 모듈).파이썬이 서브 모듈에서 서브 모듈을 가져 오기

module: 
    main_class.py 
    submodule1.py 
    .... 

는 지금은 다른 supermodule하여이 완성 된 모듈을 사용하려면, 그래서 폴더 구조 그러나 이제 모듈 내부 main_class.py의 코드에서 사용되는 모든 수입은 실패이

supermodule: 
    main_class_super.py  -- this class imports module.main_class 
    module: 
     main_class.py 
     submodule1.py 
     .... 

같이 변경됩니다 (수입은 이제 main_class_super.py의 네임 스페이스에서 작동하기 때문에)

전체 소스를 재구성하지 않고이 문제를 해결하는 방법에 대해 알고 싶습니다.


구체적인 오류 : 나는 줄을 사용 내 supermodule.py에서

import submodule1 

: 내 main_class.py에서

나는 선을 사용하는 슈퍼 클래스를 실행할 때

import module.main_class 

을 그 수입품 module.main_class 물론 import submodule1 줄도 실행되지만 supermodule.py의 네임 스페이스에서 모듈을 찾을 수 없으므로 실패합니다.

답변

1

당신이 파이썬 2에있는 경우 (3에 필요하지 않은) 파일에 from __future__ import absolute_import을 추가해야합니다 그래서 당신은이에 따르면 Guido states in PEP 328

같은 수입을 할 수있는 당신이해야

  • 확인 모든 패키지 폴더는 main_class.py에서 가져올 수

  • 로 표시하는 데에 __init__.py이 :로 import submodule1 또는 import module.submodule1 교체 main_class_super.py에서

  • : from .module import main_class

당신이 어떤 외부 패키지 구조에 대해 걱정하지 않아도이 방법을 import module.main_class를 교체합니다.

Python 2.5에서 절대 및 명시 적 상대 가져 오기 was added을 사용하는 옵션입니다.

+0

어, 내가 어떻게 도와 줄 수 있을지 모르겠군요. 내 폴더 구조를 감안할 때 supermodule.py 내부에서 submodule1.py를 어떻게 가져올 수 있습니까? – WodkaRHR

+0

수정 된 답변을 명시 적 솔루션을 추가하십시오 – janbrohl

+0

다른 문제가 발생하여 죄송합니다. 하위 모듈 내부에서 여러 개의 모듈이 같은 모듈을 가져옵니다 (예 : submodule1은 submodule2와 3을 가져오고 submodule2는 submodule3을 가져옵니다.) 그런 다음 submodule2 내에서이 가져 오기가 작동하지 않습니다 (import import submodule3에서 가져온 것). – WodkaRHR

관련 문제