2014-04-29 6 views
1

프로젝트 내의 공통 종속성을 어떻게 처리합니까?python에서 공유 모듈 종속성을 피하는 방법

내가 모듈을 mod1mod2과 함께 패키지 pack을 만들라고 말합니다. 모든 모듈은 일부 공통 외부 모듈을 사용해야합니다. 예를 들면 :

mod1.py: 
import sys 
import numpy  
# define stuff 

mod2.py: 
import numpy 
# define more stuff 
나는 또한 내 주요 코드에서 동일한 외부 모듈을 사용하려면

:

: 나는 numpysys로드, 즉 여러 복사본을 가지고있는 것 같습니다이 상황에서

main.py: 
import sys 
import numpy 
import pack 
# do the stuff 

numpy 
pack.mod1.numpy 
pack.mod2.numpy 

이게 좋지 않습니다. 여러 개의 numpy이 실제로 있습니까? 아니면 numpy에 3 개의 이름이 있습니까? 이런 종류의 일을 피할 수있는 방법이 있습니까? 이 경우 가장 좋은 방법은 무엇입니까?

답변

2

첫 번째 모듈에서 모듈을 가져올 때 모듈의 코드가 한 번만 실행되므로 걱정할 필요가 없습니다. 두 번째 모듈에서 가져올 때 이미 캐시 된 모듈에 '포인터'만 가져옵니다.

빠른 데모 :

# mod1.py 
print 'starting mod1' 
import mod3 
print 'finished mod1' 

# mod2.py 
print 'starting mod2' 
import mod3 
print 'finished mod2' 

# mod3.py 
print 'in mod3' 

결과 :

In [2]: import mod1 
starting mod1 
in mod3 
finished mod1 

In [3]: import mod2 
starting mod2 
finished mod2 
+0

또한, 당신이 모듈을 reload'ing'시작하면 여러 모듈 참조는 의미가 될 생각합니다. 여러면에서 Python 모듈 가져 오기는 Java에서'import'와 유사하거나 C#에서'using'과 유사합니다. –

관련 문제