2011-04-11 3 views
1

특정 모듈을 가져올 수없는 경우 라이브러리가 어떻게 동작해야하는지에 대한 표준적인 방법이 있습니까? 그것은 단지 예외를 허락해야 하는가 아니면 오히려 그것을 잡아서 적절한 정보로 우아하게 종료해야 하는가? 그것이 좋든 나쁘 든이python : 가져 오기 실패시 라이브러리 동작

try: 
    from argparse import ArgumentParser 
except ImportError: 
    print('fathom library requires python 3.2 or argparse package.') 

입니다 : 예를 들어

나는 이런 일이?

답변

4

라이브러리는 종료하는 대신 항상 ImportError을 가져와야합니다. 프로그램은 조건부로 그것을 포함하기를 원할 것이다.

하위 모듈이 ImportError을 발생시키는 경우 추가 정보를 첨부하여 모듈을 다시 올리는 것이 가장 좋습니다.

+0

첫 번째 단락이 혼란 스럽습니다. 2 가지 경우 (A가 B를 수입하려고 시도하고 A가 B를 수입하려고 시도 할 때)는 "도서관", "프로그램"및 "it"중 어느 것을 말하십시오. 가장 그럴듯한 해석은 A == program, B == library, C == it ...하지만 "it"에는 referent가 없습니다. –

2

가능한 경우 모듈을 패키지와 함께 배포 한 다음이 패턴을 따라 사용중인 모듈을 선택하십시오 (파이썬 3.x를 선호하며 기본 모듈을 기본 제공).

그렇지 않은 경우 일반적으로 나중에 더 명확하지 않은 예외가 발생하지 않는지 확인해야합니다 (즉, except의 끝에 청소해야하며, 이 예외를 던지거나 자신을 던지십시오.

PS - This wasn't an uncommon occurrence for simplejson before it got included in Python proper as well

+0

이것은 깔끔한 아이디어입니다. 내 라이브러리에'argparse' 패키지를 대체물로 포함시킬 것입니다. 감사. – gruszczy

0

그 취향의 문제. 나는 당신의 방법을 좋아한다. 깨끗하고 깨끗합니다.

관련 문제