메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

파이독(pydoc) 사용하기

한빛미디어

|

2002-02-22

|

by HANBIT

13,536

저자:카메론 레어드(Cameron Laird), 전순재 역

생산성이 높은 파이썬으로 신나게 코딩을 하다보면 머리가 복잡해진다. 겨우 날짜 계산을 하기 위해 clock, date, 또는 time 모듈이 필요한가? 파이썬 2.1 폴더 안에 있는 "Module Docs" 아이콘을 클릭하면 사용자 인터페이스(GUI) 제어판이 나타난다. 그리고 "time"을 타이핑해 넣으면 그 애플리케이션에서 다섯개의 서로 다른 섹션중에 하나를 선택할 수 있게 되어 있다([그림 1] 참고). 첫 번째를 클릭하면 파이썬의 표준 time 모듈에 대한 참조 문서가 열람기에 넣어져 화면에 나타난다. 더욱더 놀라운 사실은 이 프로그램이 날짜 계산과 관련된 모든 질문에 대한 완전한 해답을 가지고 있다는 것이다.


[그림 1] 다섯 개의 섹션이 파이독(pydoc) 대화 상자에 나타난다.

전혀 힘들지 않다는 것! 그것이 바로 파이독(pydoc)이 의도한 바이다. (위 그림에서 GUI 열람기의 제목이 "파이독(pydoc)"인 것을 주목하라.) 파이독(pydoc) 모듈은 모듈 문서를 추출하여 그것을 HTML이나 텍스트로 보여준다. 파이썬 2.1 배포판은 처음으로 파이독(pydoc)을 표준 라이브러리의 일부로 포함하고 있으며 UC 버클리대 졸업생인 가-핑 이(Ka-Ping Yee)가 그 모듈을 유지 보수하고 있다. 그가 운영하는 웹사이트를 방문하면 소스를 볼 수 있다. 가-핑 이는 이전에 온라인 문서 유틸리로 제공하던 htmldocinspect에 기초를 두고 파이독(pydoc)을 관리하고 있다. 그는 타미 버네트(Tommy Burnette)가 만든 manpy와 폴 프레스코드(Paul Prescod)가 만든 onlinehelp에서 영감을 얻어 자신의 버전을 만들었다고 한다. 참고로 가-핑 이의 모듈은 5년 전에 시작된 마크-안드레 렘버그(Marc-Andre Lemburg)의 파이독(pydoc)과는 직접적인 관련이 없다.

위의 그림은 윈도우 데스크탑에서의 화면이지만, 파이독(pydoc)은 맥 OS와 유닉스에서도 잘 작동한다. 파이독(pydoc)에는 그래픽 인터페이스와 명령-라인 인터페이스가 모두 있다. 물론 모든 선택사항에 대한 자세한 사항은 "pydoc pydoc"에서 볼 수 있다. 예를 들어 유닉스 명령 라인에서 "pydoc -k time"을 타이핑해 넣으면 time에 관련된 모듈들이 나열된다. "man -k ..."와 아주 유사하게 말이다.

GUI와 명령 라인에서 여러분은 파이독(pydoc)을 세 가지 다른 모드로 사용할 수 있다. 우선은 왜 파이독(pydoc)에 익숙하게 되기를 원하는지 그것부터 자세히 살펴보겠다. 그리고 나서 프로그램에서 파이독(pydoc)을 철저하게 이용하는 법을 보여주겠다.

문서화의 중요성

도데체 왜 이것이 온라인 도움말을 뒤흔들고 있는가? 파이썬의 새로운 리스트 번역(list comprehensions) 혹은 영역 고려(scoping considerations)가 알고리즘적으로 심오한데 반해 도움말 시스템이 그다지 심오하지 못한 것은 사실이다. 그렇지만 효율적인 문서 시스템을 적절하게 다듬으면 파이썬 프로그래머들에게 내적으로 잠재적인 도움이 될 수 있다. 이전에도 도움말 시스템이 만들어진 적이 있지만 어떤 것도 파이독(pydoc)이 나오기 전까지는 특별하게 파이썬 프로그래머들에게 혜택을 주지는 못했다.

문서화는 파이썬 세계에서 항상 중요한 요소였다. 파이썬에 새로 입문한 대다수의 사람들은 파이썬 문서의 명료함과 완전함에 매료된다. 그리고 파이독(pydoc) 모듈은 그러한 장점들을 부각시켰으며 쓰기 쉽고 배우기 쉬운 언어인 파이썬의 입지를 확립시켜 주었다. 파이썬은 팀 프로젝트에도 잘 적용 될 수 있기 때문에 지난 수 년간 상당한 관심을 얻었다. 일관적이면서도 포괄적인 문서 시스템이라는 특성으로 인해 특히 개인의 범위를 넘어서는 작업을 할 때 그 장점을 인정받고 있다. 파이독(pydoc)처럼 상호대화적으로 편리하다면 이 시스템은 파이썬 개발자인 팀 피터스(Tim Peters)가 인정하듯이, "훌륭하고 중요한 것"이 될 수 있다. 피터스는 상호대화적인 도움말로 이전에 성공한 예로 이맥스, 유닉스 맨 페이지, 그리고 REBOL 프로그래밍 언어를 들고 있으며 파이독(pydoc)을 이들과 견줄만한 가치가 있다고 말했다.

파이독(pydoc)을 철저히 이용하기

그래픽 데스크탑이나 명령 라인에서 실행되어 별개의 프로세스로 접근하는 독립적인 파이독(pydoc) 외에도, 파이독(pydoc)을 철저히 이용하는 또 다른 상호대화적인 방법이 있다. 그리고 이 흥미로운 상호대화 방법은 바로 파이썬 쉘 안에 있다. 우리가 인터프리터의 >>> 프롬프트에 있다고 가정해 보자. 아마도 우리는 from pydoc import help를 요청할 것이다. 이제 모든 표준 파이썬 문서는 하나의 키워드 범위 안에 있게 된다. help는 일종의 함수로 다른 함수, 클래스, 모듈에 있는 문서를 가져오는 법을 알고 있다. 예를 들어 "help(int)"라고 타이핑해 넣으면 아래와 같은 메시지를 보게 된다.

Help on built-in function int:

int (no arg info)
  int(x) -> integer

  Convert a string or number to an integer, 
  if possible. A floating point argument will 
  be truncated towards zero.
똑같은 결과를 얻기 위한 또 다른 방법은 단순하게 인터프리터의 프롬프트에서 "help"라고 명령하는 것이다. 인자 없이 이것은 우리가 이미 본 적이 있는 상호대화적인 도움말 브라우저를 시작한다.

숙련된 파이썬 사용자들은 int._doc_이 똑같은 내용을 가지고 있다는 것을 알게 될 것이다. 그렇지만 help()는 직접적으로 _doc_를 검색하는 것보다 여러 가지 면에서 장점이 있다. help()는 단순하게 타자하기 더 쉽고, 문서화 문자열을 적절하게 형식화하여 지능적으로 출력하며, function._doc_구문에 맞지 않은 정보를 네비게이션 하는 법을 알고 있다. 무엇보다, 파이독(pydoc)은 sys.path를 사용해 현재 인터프리터가 사용하고 있는 프로그래밍 모듈에 상응하는 문서에 이를 수 있으며 상속된 모듈에 대한 정보를 출력하는 법을 알고 있다. 초기 2.1 사용자들은 help()가 그들의 작업에 상당한 도움이 되었다고 칭송한다.

파이독(pydoc)의 더욱 더 강력한 형태는 웹 연결("Net connection)을 통해 사용할 수 있다. 공식적으로 이용할 수 있는 pydoc.org는 단순히 한줄짜리 모듈 요약이 아니라 모든 모듈에 있는 모든 객체의 모든 문서화 문자열을 알고 있는 특수한 인덱스 덕분에 혜택을 입고 있다.

프로그래밍의 가능성

상호대화적인 help()와 웹 접근가능성이 파이독(pycoc)의 유연성을 고갈시키지는 않는다. 파이독(pydoc)을 사용하기 위한 마지막 방법을 감상해 보려면 파이독(pydoc) 그 자체를 프로젝트로 생각해 보는 방법이 있다. 여기에는 다음과 같은 세 가지 요소가 있다.
  • 문서 세트
  • 내부 정보를 출력을 목적으로 한 일반 목적 형식화에 대한 파이독(pydoc) 모듈의 클래스 정의
  • "독립" 프로세스로 프로그래밍 인터페이스를 가능하게 하기 위한 래퍼(wrapper)와 단축키
위 세 사항 각각은 아주 단순하며 파이썬 배포판에서 완전하게 소스로 사용할 수 있다. 따라서 당연히 파이독(pydoc)에 기반을 두고 프로그래밍할 수 있다. 위의 세 가지 사항을 대체하고, 하부클래스화하며, 다시 작성함으로써, 프로그래머는 자신만의 특수 목적용 도움말 시스템을 구축할 수 있다.

파이독(pydoc)위에 구축되고 있는 실질적인 첫 번째 프로젝트는 가-핑 이 자신의 cgitb 모듈로 이것 역시 그의 파이썬 사이트에서 얻을 수 있다. cgitb는 조그마한 역추척 출력기로서 CGI 오류를 관리한다. 가-핑 이는 cgitb를 다음과 같이 설명한다.
그것은 파이독(pydoc)을 사용하고 함께 조사해서 CGI 스크립트에서 에러가 발생할 때마다 역추적을 우아하고 멋지게-형식화하 여 출력해 보여준다.

솔직히 말해 "cgitb"가 파이썬 배포판에 들어가거나 이러한 경로를 거치지 않아도 배포 된다면 확실히 파이썬은 CGI 프로그래밍에 더욱 좋은 환경이 될 것이며, 어느 누구도 더 이상 다른 언어를 선택하지 않게 될 것이라고 나는 믿는다. 왜냐하면 다른 언어들은 CGI 스크립트에 에러가 있을 때에도 그저 조용히 종료할 따름이며, 무엇이 잘못되었는지에 대해서는 어떤 정보도 남기지 않기 때문이다. 스크립트를 cgitb라는 도구로 디버그할 경우 상세한 예외 덤프 출력으로 모든 함수 이름들과 인자 값을 볼 수 있으며, 아주 빠르고 쉽게 버그를 찾아서 없애 버릴 수 있다.
결론

파이썬 2.1의 복사본을 설치하고 여러분이 제일 먼저 해야할 일은 파이독(pydoc)를 연습하는 것이다. 파이독(pydoc)을 공부하면 파이썬에 대해서 알아야 할 다른 모든 것들을 더 효율적으로 배울수 있을 것이다. 그리고 프로젝트에 도움말 시스템을 구현해야 할 때 파이독(pydoc)은 훌륭한 시발점이 되어 줄 수 있을 것이다.

카메론 레어드(Cameron Laird)는 Phaseit, Inc.의 부사장으로 오픈소스 기술과 관련된 저술활동을 활발히 하고 있다.
TAG :
댓글 입력
자료실