2012-05-31 4 views
1

사용자가 플러그인을 사용하여 확장 할 수있게 해주는 응용 프로그램이 있습니다. 사용자가Python : (현재 사용되지 않는) 위치에서 모듈을 가져 오면 경고 메시지를 내 보냅니다.

import helpermodule 

이제 우리는 그들 모두가 메인에서로드되도록는 도우미 모듈의 포장을 변경하는 것이 더 나은 것이라고 결정했습니다 사용하여 액세스 할 수 있습니다 자신의 플러그인에서, 그래서 우리는 몇 가지 도우미 모듈을 제공하고 있습니다 다음과 같은 패키지 :

사용자 플러그인의 기존 코드를 손상시키지 않으므로 이전 방법을 제공합니다. 실제로 우리는 방금 디렉토리의 __init__.py 파일에 도우미 모듈을 가져 왔습니다. warnings 표준 라이브러리를 사용하여) 사용자 스크립트에서 도우미 모듈을 가져올 때 매우주의해야합니다. 옛날 방식.

제 질문은 : 사용자가 도우미 모듈을 "잘못된"방식으로 가져 왔는지 알 수있는 방법이 있습니까? 우리는 사용자의 코드를 검사하지 않고이 작업을 수행하는 것이 이상적입니다.

답변

1

"여전히 오래된 방법"을 달성하는 방법에 따라 다릅니다. 이전 패키지를 검색 경로에 직접 두는 것만으로도 ourpackage에 import helpermodule을 수행하는 것 같습니다. (즉, 모듈 자체를 여전히 "잘못된"방식으로 가져 오는 중입니다.)이 경우 여기에는 하나의 가능성이 있습니다.

\dir_on_path 
helper.py 
    \ourpackage 
     __init__.py 

#### helper.py 
import sys 
if 'testpack' in sys.modules: 
    print "Imported the good way" 
else: 
    print "Imported the bad way" 
#### 

#### __init__.py 
import teststuff 
#### 

그러나, 그 일을이 방법은 몇 가지 어색한 문제를 잎 있습니다. import testpack.teststuff을 할 수 없습니다. 또한 테스트 모듈을 좋은 방법과 나쁜 방법으로 가져 와서 sys.modules에 별도의 복사본을 두 개 만들 수있는 가능성이 남아 있습니다.

"아직도 오래된 방법"을 제공하는 방법이 아니라면 명확하게 편집하십시오.