2011-01-14 5 views
9

다른 프로젝트 파일 (.py 파일)에서 타사 모듈을 사용해야하는 프로젝트에서 작업 중입니다. 상황은 이와 같습니다.공통 모듈에 대한 파이썬 다중 가져 오기

제 3 자 모듈 "common.py"을 가져 오는 파일 "abc.py"가 있습니다. "common.py"파일을 가져 오는 다른 파일도 있습니다. 이 모든 파일들은 메인 프로젝트 파일 "main.py"에도 임포트됩니다.

"main.py"도 모든 프로젝트 파일을 가져 오기 때문에 프로젝트의 동일한 모듈을 여러 파일로 여러 번 가져올 수 있습니다.

프로젝트의 크기가 여러 가져 오기 문에 의해 어떻게 영향을 받는지 잘 모르겠습니다.

누군가가 나를 조금 더 쉽게 만드는 데 도움이 될 수 있습니다.

답변

21

오직 만 가져 오기 모듈을 한 번만 가져옵니다. 이후의 모든 가져 오기는 현재 네임 스페이스에 추가하기 만하면됩니다.

파일에 필요한 파일을 가져 와서 사용 가능하게하고 파이썬이 모듈을로드하는 것을 알아 내려고합니다.

3

예, 맞습니다.이 동작은 실제로 Python에 존재합니다. 즉, 사용자 코드는 예를 들어, 다른 방법으로 같은 모듈을 가져올 시도하는 경우 - a.py 파일이 다른 import로 오는 동안A 패키지에서 을 수행 A 패키지와 제 import에 위치한 import aimport A.a (밖에 서).

이것은 실제 생활에서 특히 쉽게 발생할 수 있습니다. 특히 다단계 패키지 Python 프로젝트의 경우에 쉽게 발생할 수 있습니다.

이러한 동작의 부작용이 발생했습니다. 즉, 이러한 방식으로 가져온 모듈에 정의 된 클래스에 대해 개체를 검사하면 isinstance 명령이 작동하지 않습니다.

제가 생각할 수있는 해결책은 __builtin__. __ import__ 함수를 재정 의하여 더 지능적으로 작업을 수행하는 것입니다.

관련 문제