이콜레모 개발자 위키

Page history of 파이썬



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

<p>&nbsp;</p>
<p><code class="widget">TableOfContents()</code></p>
<h2>패키징</h2>
<p>파이썬은 <a href="https://pypi.python.org/">PyPI</a>에서 패키지 관리를 하며, easy_install이나 pip로 패키지를 설치할 수 있다. easy_install은 setuptools 패키지의 명령어이며 과거 파이썬의 주 패키지 관리 도구로 쓰였으나, 요즘은 pip로 옮겨가는 추세다. setuptools의 예전 버전이 구렸는지 distribute라는 게 나와서 대체하기 시작했는데, 처음에는 setuptools와 같이 설치되서 alias로 덮어서 쓰는 형태였는데, 지금은 distribute가 다시 setuptools에 통합되어 들어가서 그냥 setuptools만 생각하면 된다. <a href="https://devcenter.heroku.com/articles/getting-started-with-django#start-a-django-app-inside-a-virtualenv">virtualenv 가이드에서 간혹 --distribute 같은 옵션을 쓰라고 하는</a>데, 쓸데 없는 짓이다.</p>
<p><a href="http://pythonhosted.org/an_example_pypi_project/setuptools.html">http://pythonhosted.org/an_example_pypi_project/setuptools.html </a>setuptools를 이용해서 <a href="https://pypi.python.org/">PyPI</a>에 패키지를 올리는 법.</p>
<h2>한글</h2>
<ul>
<li><a href="http://pythonhosted.org/korean/">korean</a> gettext의 한글 특이사항 반영, 초성 분리 등</li>
<li><a href="http://pythonhosted.org/hangulize/">hangulize</a> 외국어의 한글 발음</li>
</ul>
<h2>파이썬 개발 도구</h2>
<p>자동 완성, 소스 찾아가기 등의 문법 지원 기능을 제대로 쓸 수 있는 IDE는 이클립스 <a href="http://pydev.org/">PyDev</a>와&nbsp;<a href="http://www.jetbrains.com/pycharm/">PyCharm</a> 둘 뿐이다. 이외에는 자동완성을 흉내만 낼 뿐 제대로 되지 않으므로, IDE가 필요하면 다른 것은 살펴볼 필요도 없고 둘 중에 고르면 된다. 최근 <a href="http://pytools.codeplex.com/">Python Tools for Visual Studio</a>도 제대로 문법지원을 해준다는 설이 있다.</p>
<p>문법 지원은 필요 없고 문법 강조(Syntax Highlight)만 잘 되어도 된다면 선택의 폭은 훨씬 넓다. vi도 충분히 괜찮고, <a href="Sublime Text">Sublime Text</a>는 멀티플랫폼을 잘 지원하고 속도가 겁나 빠르며, 무려 파이썬으로 플러그인을 작성할 수 있어 Emacs 부럽지 않다. 물론 그래도 IDE 쪽을 추천한다.</p>
<p>IDE를 쓰더라도 <a href="http://ipython.org/">IPython</a>은 필수.</p>
<h2>XML과 HTML</h2>
<p>현재 <a href="파이썬">파이썬</a>에서 XML 처리의 <a href="de facto standard">de facto standard</a>가 되어가고 있는 것은 <a href="http://lxml.de/">lxml</a>이다. <a href="http://www.xmlsoft.org/">libxml2</a>에 기반하고 있어 다른 XML 라이브러리에 비해 압도적으로 성능이 좋고,&nbsp;<a href="XPath">XPath</a>, <a href="CSS selector">CSS selector</a> 쿼리 등의 지원도 좋다. 다만, XML을 <a href="pythonic">pythonic</a>하게 재해석한 <a href="http://docs.python.org/2/library/xml.etree.elementtree.html">ElementTree</a>의 문법을 사용하는데, 장단점이 있다. <a href="DOM vs ElementTree">DOM vs ElementTree</a>를 참조하라.</p>
<p>XML 표준 DOM API를 쓰고 싶다면 dom의 기본 구현체인 <a href="http://docs.python.org/2/library/xml.dom.minidom.html">minidom</a>을 쓰면 된다. <a href="http://docs.python.org/2/library/xml.dom.minidom.html">minidom</a> 역시 DOM 표준을 다 지원하는 것은 아니지만, 핵심적인 기능은 다 된다. <a href="http://docs.python.org/2/library/xml.dom.minidom.html">minidom</a>에서&nbsp;<a href="XPath">XPath</a>를 쓰려면&nbsp;<a href="http://code.google.com/p/py-dom-xpath/">py-dom-xpath</a>을 사용한다. css query는 직접 지원하지는 않고 <a href="http://pythonhosted.org/cssselect/">cssselect</a>로 <a href="XPath">XPath</a> 문법으로 변환한 후 사용하면 된다. <a href="http://lxml.de/">lxml</a>의 xpath는 <a href="http://www.xmlsoft.org/">libxml2</a>의 C 구현체를 사용하므로 속도가빠르지만 <a href="http://code.google.com/p/py-dom-xpath/">py-dom-xpath</a>은 성능이 그리 좋지 않다.</p>
<p>HTML의 경우는 <a href="http://docs.python.org/2/library/xml.dom.minidom.html">minidom</a>의 파서나 <a href="http://lxml.de/">lxml</a>의 html 파서나 둘다 <a href="HTML5">HTML5</a> 문서를 XML 파서처럼 파싱하므로 브라우저가 파싱하는 것과 차이가 있다. <a href="https://github.com/html5lib/html5lib-python">html5lib</a>는 최신 브라우저와 같은 로직으로 HTML을 파싱하며 파싱 결과의 treebuilder로 <a href="http://docs.python.org/2/library/xml.etree.elementtree.html">ElementTree</a>, <a href="http://lxml.de/">lxml</a>, <a href="http://docs.python.org/2/library/xml.dom.minidom.html">minidom</a>을 모두 사용할 수 있다. 순수 파이썬으로 작성되어 성능은 느리다.</p>
<p>HTML을 대충 쉽게 처리하고 싶을 때는 <a href="http://www.crummy.com/software/BeautifulSoup/">BeautifulSoup</a>이 편리하다. 다만, 오랫동안 쓰여왔던 3.x 버전과 최신 버전인 4.x 사이에 차이가 약간 있어서 구글링한 참조 코드들이 그대로 동작하지 않을 수도 있다. PyPI 패키지명도 달라서 3.x는 <code>BeautifulSoup</code>이고 4.x는 <code>beautifulsoup4</code>다. <a href="https://github.com/html5lib/html5lib-python">html5lib</a>이 파싱을 제공하고 트리빌더를 선택할 수 있는 것과 반대로 <a href="http://www.crummy.com/software/BeautifulSoup/">BeautifulSoup</a>은 파서를 선택할 수 있다. 예전에는 HTML을 <a href="pythonic">pythonic</a>하게 사용할 수 있는 라이브러리로 많이 쓰였으나, <a href="http://docs.python.org/2/library/xml.etree.elementtree.html">ElementTree</a>가 널리 쓰이면서 존재 이유가 사라져가고 있다.</p>
<p>이외에 <a href="jQuery">jQuery</a>처럼 쓰기 위한 도구로 <a href="http://pythonhosted.org/pyquery/">pyquery</a>를 비롯한 몇몇 도구가 있다. <a href="http://pythonhosted.org/pyquery/">pyquery</a>는 <a href="http://lxml.de/">lxml</a>을 사용하여 성능과 사용성 모두를 충족시킨 예라고 할 수 있다. 그러나&nbsp;<a href="jQuery">jQuery</a>가 필요할 정도로 HTML을 진지하게 다루어야 하는 경우에는&nbsp;<a href="http://lxml.de/">lxml</a>을 쓰기 애매해다. HTML5를 제대로 다루지 못하기 떄문이다. 그러면 결국 <a href="https://github.com/html5lib/html5lib-python">html5lib</a>을 파서로 쓰게 되는데, 그럼 성능 이득은 날아간다. 물론 그래도 pyquery를 이용하면 좀더 편리한 것은 사실.</p>
<p>&nbsp;</p>
Wiki at WikiNamu