2010-05-19 6 views
1

재미있는 문제가 있습니다. 여러분에게 물어보고 싶은 재미있는 문제가 있습니다.파이썬 : 잘못된 import 문을 사용하여 모듈 가져 오기 => 결과에서 벗어난 정보 ImportError

일부 존재하지 않는 모듈 B를 가져 오는 모듈 A를 가져오고 있습니다. 물론 ImportError가 발생합니다.

이 A.py 지금의이 문제에,

>>> import A 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/tmp/importtest/A.py", line 1, in <module> 
    import B 
ImportError: No module named B 

좋아을 가져올 수 있도록

import B 

모습입니다. 이 ImportError가 안에있는 가져 오기에서 가져 오거나 안에있는 손상된 가져 오기에서 오류의 문자열 표현을보고이 없는지 어떻게 알 수 있습니까?

차이점은 A가 없거나 잘못된 가져 오기 문이 있다는 것입니다.

당신은 또한 코드를 검사 할 수 백 트레이스에서 볼 수

건배

답변

0

을 BB ... 당신이 나를 도울 수 있기를 바랍니다.

그러나 왜 당신은 알아 내고 싶습니까? 어느 쪽이든 A는 작동하지 않습니다.

+0

이것은 어떤 사용자 입력에 따라 런타임에 사용자 코드 모듈을 가져오고 존재할 수 있지만 사용자가 잘못 구현 한 일종의 플러그인 시스템 용입니다 (예 : 잘못된 모듈을 가져옴). . – bbb

+0

추가 : 나는 A _does_가 처음에 존재하는지 알고 싶다 – bbb

2

는 표준 LIB의 imp 모듈이있다, 그래서 당신은 할 수 :

모듈을 찾을 수 없을 때 ImportError 제기
>>> import imp 
>>> imp.find_module('collections') 
(<_io.TextIOWrapper name=4 encoding='utf-8'>, 'C:\\Program Files\\Python31\\lib\\collections.py', ('.py', 'U', 1)) 
>>> imp.find_module('col') 
Traceback (most recent call last): 
    File "<pyshell#2>", line 1, in <module> 
    imp.find_module('col') 
ImportError: No module named col 

. 해당 모듈을 가져 오려고하지 않으므로 ImportError이 특정 모듈에 의해 생성되는지 여부에 대해 완전히 독립적입니다.

실제로 모듈을로드하려면 imp.load_module이 있어야합니다.

+0

그 소리는 유망하고, 큰 thx이다. – bbb