내 프로젝트에서 내부 가져 오기를 사용하는 데 어려움이 있습니다. logger.py
및 config.py
모듈은 모든 패키지의 모듈에 필요한하위 패키지에서 공유 모듈에 액세스
app
|- Gui.py
|- Main.py
|- logger.py
|- config.py
|- WebParser (package)
|- __init__.py
|- LinksGrabber.py
|- LyricsGrabber.py
|- ImagesGrabber.py
|- (Many other packages...)
및 (사용하는 경우에만 bulit-모듈) 독립적이 내 프로젝트의 부분적인 트리 구조입니다. 패키지 내부에서 이러한 모듈에 액세스하는 것은 까다로운 작업입니다.
이 내가 구성 액세스를 활성화하고 WebParser\LinksGrabber.py
에 기능을 로그인하는, 그것을 달성하기 위해 시도하는 방법이다 :
# WebParser\__init__.py:
sys.path.append('..') # for outside-package modules
import config
from logger import log
# WebParser\LinksGrabber.py:
import WebParser
config = WebParser.config
log = WebParser.log
문제들 :이 코드 냄새가
- . 이 동작을 수행하는 더 좋은 방법이있을 것입니다.
import WebParser
으로 전화하고 암시 적으로 가져 오지 않고WebParser.LinksGrabber
및WebParser.LyricsGrabber
을 바로 사용하고 싶습니다. 이것은__init__.py
안에 모듈을 가져 오기로 할 수 있지만 모든 패키지의 모듈이 패키지 자체를 가져 오기 때문에 가능하지 않으며 재귀 적 가져 오기를 실행합니다.
더 나은 구현이나 다른 코드 디자인을 제안 할 수 있습니까?
from .. import config
from ..logger import log
"모든 모듈은 패키지 자체를 가져옵니다"라고 말하면 어떤 모듈입니까? 외부 디렉토리 (config, Gui 등)의 모든 모듈이 WebParser를 가져 오지만 WebParser의 모든 모듈도 외부 모듈을 가져오고 있다는 것을 의미합니까? 아니면 WebParser 내의 모듈이 WebParser 자체를 가져오고 있다는 것을 의미합니까? – BrenBarn
WebParser 내부의 모든 모듈이 WebParser 자체를 가져옵니다. – iTayb