이콜레모 개발자 위키

Page history of 파이썬



Title: 파이썬 | edited by Youngrok Pak at 10 years, 10 months ago.

 

TableOfContents()

패키징

파이썬은 PyPI에서 패키지 관리를 하며, easy_install이나 pip로 패키지를 설치할 수 있다. easy_install은 setuptools 패키지의 명령어이며 과거 파이썬의 주 패키지 관리 도구로 쓰였으나, 요즘은 pip로 옮겨가는 추세다. setuptools의 예전 버전이 구렸는지 distribute라는 게 나와서 대체하기 시작했는데, 처음에는 setuptools와 같이 설치되서 alias로 덮어서 쓰는 형태였는데, 지금은 distribute가 다시 setuptools에 통합되어 들어가서 그냥 setuptools만 생각하면 된다. virtualenv 가이드에서 간혹 --distribute 같은 옵션을 쓰라고 하는데, 쓸데 없는 짓이다.

http://pythonhosted.org/an_example_pypi_project/setuptools.html setuptools를 이용해서 PyPI에 패키지를 올리는 법.

한글

  • korean gettext의 한글 특이사항 반영, 초성 분리 등
  • hangulize 외국어의 한글 발음

파이썬 개발 도구

자동 완성, 소스 찾아가기 등의 문법 지원 기능을 제대로 쓸 수 있는 IDE는 이클립스 PyDev와 PyCharm 둘 뿐이다. 이외에는 자동완성을 흉내만 낼 뿐 제대로 되지 않으므로, IDE가 필요하면 다른 것은 살펴볼 필요도 없고 둘 중에 고르면 된다. 최근 Python Tools for Visual Studio도 제대로 문법지원을 해준다는 설이 있다.

문법 지원은 필요 없고 문법 강조(Syntax Highlight)만 잘 되어도 된다면 선택의 폭은 훨씬 넓다. vi도 충분히 괜찮고, Sublime Text는 멀티플랫폼을 잘 지원하고 속도가 겁나 빠르며, 무려 파이썬으로 플러그인을 작성할 수 있어 Emacs 부럽지 않다. 물론 그래도 IDE 쪽을 추천한다.

IDE를 쓰더라도 IPython은 필수.

XML과 HTML

현재 파이썬에서 XML 처리의 de facto standard가 되어가고 있는 것은 lxml이다. libxml2에 기반하고 있어 다른 XML 라이브러리에 비해 압도적으로 성능이 좋고, XPath, CSS selector 쿼리 등의 지원도 좋다. 다만, XML을 pythonic하게 재해석한 ElementTree의 문법을 사용하는데, 장단점이 있다. DOM vs ElementTree를 참조하라.

XML 표준 DOM API를 쓰고 싶다면 dom의 기본 구현체인 minidom을 쓰면 된다. minidom 역시 DOM 표준을 다 지원하는 것은 아니지만, 핵심적인 기능은 다 된다. minidom에서 XPath를 쓰려면 py-dom-xpath을 사용한다. css query는 직접 지원하지는 않고 cssselectXPath 문법으로 변환한 후 사용하면 된다. lxml의 xpath는 libxml2의 C 구현체를 사용하므로 속도가빠르지만 py-dom-xpath은 성능이 그리 좋지 않다.

HTML의 경우는 minidom의 파서나 lxml의 html 파서나 둘다 HTML5 문서를 XML 파서처럼 파싱하므로 브라우저가 파싱하는 것과 차이가 있다. html5lib는 최신 브라우저와 같은 로직으로 HTML을 파싱하며 파싱 결과의 treebuilder로 ElementTree, lxml, minidom을 모두 사용할 수 있다. 순수 파이썬으로 작성되어 성능은 느리다.

HTML을 대충 쉽게 처리하고 싶을 때는 BeautifulSoup이 편리하다. 다만, 오랫동안 쓰여왔던 3.x 버전과 최신 버전인 4.x 사이에 차이가 약간 있어서 구글링한 참조 코드들이 그대로 동작하지 않을 수도 있다. PyPI 패키지명도 달라서 3.x는 BeautifulSoup이고 4.x는 beautifulsoup4다. html5lib이 파싱을 제공하고 트리빌더를 선택할 수 있는 것과 반대로 BeautifulSoup은 파서를 선택할 수 있다. 예전에는 HTML을 pythonic하게 사용할 수 있는 라이브러리로 많이 쓰였으나, ElementTree가 널리 쓰이면서 존재 이유가 사라져가고 있다.

이외에 jQuery처럼 쓰기 위한 도구로 pyquery를 비롯한 몇몇 도구가 있다. pyquerylxml을 사용하여 성능과 사용성 모두를 충족시킨 예라고 할 수 있다. 그러나 jQuery가 필요할 정도로 HTML을 진지하게 다루어야 하는 경우는 HTML5를 적절하게 다루지 못하는 lxml을 쓰기 애매해서 html5lib을 파서로 쓰다보니 성능 이득을 그다지 누리지 못하는 경우가 많다.

 

Wiki at WikiNamu