2009-12-07 9 views
1

, import does_not_existImportError을 제기하고ImportError에서 "module not found"와 "module threw exception"을 어떻게 구별합니까? 파이썬에서

import exists 

exists.py :

import does_not_exist 

ImportError을 올릴 것이다.

코드의 차이점을 어떻게 말해야합니까?

+0

명확하게 할 수 있습니까? 귀하의 예제에서 문제가 보이지 않습니다. – JimB

+0

JimB는 모듈이 단순히 존재하지 않는다는 것을 알고 싶어하므로 플러그인 목록을 반복하여 찾을 수 있습니다. 모듈이 존재하지만 자체 ImportError가 발생하면 원래 ImportError를 다시 발생시켜야합니다. – joeforker

+0

아, 알겠습니다. 이 경우, 나는 @ kaizer.se의 대답을 좋아한다고 생각합니다. 몇 가지 import time hook을 사용할 수 있습니다, 그리고 modulefinder,하지만 저는 이것이 잘 작동한다고 생각합니다. – JimB

답변

3

내가 아는 유일한 방법은 최상위 모듈 이름이 "존재"있는지 확인하는 것입니다 예외의 메시지 여부에 있습니다

try: 
    import exists 
except ImportError as exc: 
    if "exists" in str(exc): 
    pass 
    else: 
    raise 

이 파이썬의 ImportError를위한 기능 요청 될 수 있을까요? 모듈 이름에 변수가 있으면 편리 할 것입니다.

2

추적 코드의 tb_next를 사용할 수 있습니다. 다른 모듈에서 예외가 발생한 경우 None과 다를 것입니다.

+0

좋은 아이디어가 있기를 바랍니다. 불행히도'rpdb2'의 import hook에서 실행될 때 멈 춥니 다. – joeforker