Powerful Python Library

뷰티플 수프(Beautiful Soup)
용도: XML, HTML와 같은 구문 트리 또는 구조화된 데이터 처리.
장점: ‘뷰티플 수프’는 마크업 언어 문서를 처리하는 데 따르는 어려움을 완화해준다. 수프를 사용하면 수작업을 거쳐야 하는 여러 작업이 간소화되며, 특정 항목 또는 특정 유형의 항목을 검색하기도 훨씬 더 쉬워진다. 버전 3은 파이썬 2.x에서만 작동한다. 버전 4에서 파이썬 3 호환성이 추가되고 부팅 성능이 향상됐다. lxml 라이브러리(수프에서 코어로 사용 가능)보다 속도는 느리기는 해도, 많은 사용자들이 lxml을 직접 다루는 것보다 수프를 다루는 것을 더 편안하게 느낀다. 수프는 결함 있는 마크업에도 상당히 관대한데, 이는 스크린 스크래핑(Screen Scraping)을 하거나, 다른 다른 사람이 오래 전에 작성한 결함 있는 코드를 관리할 때 큰 도움이 된다.

필로우(Pillow)
용도: 간편한 이미지 처리
장점: 이미지 처리 경험이 있는 대부분의 파이썬 사용자들은 PIL(파이썬 이미징 라이브러리)에 익숙할 것이다. 그러나 PIL은 은 제약이 많으며, 업데이트가 잦지 않다는 단점이 있다. 필로우는 PIL보다 더 사용하기 쉬우면서도, 최소한의 변경만으로 PIL과의 코드 호환성 확보에 목표를 두고 있다. 네이티브 윈도우 이미징 기능과 파이썬의 Tcl/Tk를 지원하는 Tkinter GUI 패키지를 사용하기 위한 확장이 포함되어 있다. 필로우는 깃허브(GitHub) 또는 PyPI 자료실에서 내려 받을 수 있다.

구이(Gooey)
용도: 콘솔 기반 파이썬 프로그램을 플랫폼 기반의 GUI로 바꾸기
장점: 일반인들은 명령 줄 프로그램에 익숙하지 않다. 어떤 옵션을 사용해야 하는지, 또는 어떤 순서로 입력해야 하는지를 이해하는 것은 정말 어려운 일이다. ‘구이(Gooey)’는 argparse 라이브러리에 사용되는 인수를 GUI 형태로 표현한다. 모든 옵션에 레이블이 붙어 적절한 컨트롤(다중 옵션 항목 제공을 위한 드롭다운 등)과 함께 제공된다. 이미 argparse를 사용하고 있다면, 구이를 이용하기 위해 단 한 개의 include와 데코레이터(decorator, @)를 붙이기만 하면 된다.

피위(Peewee)
용도: SQLite, MySQL, PostgreSQL을 지원하며 확장이 풍부한 가벼운 ORM.
장점: ORM에 대한 평판이 썩 좋은 편은 아니다. 어떤 사람들은 스키마 모델링을 데이터베이스 측에 두고 그냥 방치한다. 그러나 잘 구조화되면서도 부산스럽지 않은 ORM은 데이터베이스를 건드리고 싶어하지 않는 개발자에게 이점을 제공할 수 있다. 알케미(Alchemy)와 같은 거창한 것이 필요 없는 사람에게는 ‘피위(Peewee)’가 적당하다. 피위 모델은 구축, 연결 및 조작이 쉽고, 일반적인 쿼리 조작 기능(예: 페이지 매기기)이 상당수 내장되어 있다. 애드온을 통해 더 많은 기능이 제공되는데, 여기에는 다른 데이터베이스, 테스트 도구, 그리고 ORM을 싫어하는 사람이라도 좋아하게 될 스키마 마이그레이션 시스템을 위한 확장도 포함된다.

스크래피(Scrapy)
용도: 스크린 스크래핑 및 웹 크롤링
장점: ‘스크래피(Scrapy)는 전체 스크랩 과정을 간소화해준다. 스크랩할 항목 유형을 정의하는 클래스를 만들고 해당 데이터를 페이지에서 추출할 방법에 관한 몇 가지 규칙을 작성하면 그 결과를 JSON, XML, CSV 또는 다른 형식으로 내보내준다. 수집된 데이터를 있는 그대로 저장하거나 가져오는 과정에서 필요 없는 부분을 제거할 수 있다. 또한 스크래피는 웹사이트 로그인이나 세션 쿠키 처리와 같은 기타 다양한 작업을 지원하기 위해 확장될 수 있다. 스크래피로 자동 추출된 이미지는 스크랩된 콘텐츠에 연결된다.

아파치 립클라우드(Apache Libcloud)
용도: 하나의 일관적인 통합 API를 이용해서 여러 클라우드 공급업체에 접속할 수 있다.
장점: 클라우드 공급업체들은 하나같이 독자적인 방식을 선호하므로, 십여 개의 공급업체를 위한 통합 메커니즘과 각각의 리소스를 다루기 위한 방법이 있다는 것은 대단히 유용한 부분이다. 연산, 저장, 부하 분산 및 DNS를 위한 API를 사용할 수 있으며 2.x 및 3.x 파이썬을 모두 지원한다. 높은 성능을 위해 파이파이(PyPy) 버전의 파이썬을 사용하는 사람을 위해 파이파이(PyPy)도 지원한다.

파이게임(Pygame)
용도: 파이썬으로 비디오 게임을 제작하기 위한 프레임워크
장점: 게임 개발 분야에서 일하지 않는 사람이 이러한 프레임워크를 다룰 일이 있을까 라고 생각한다면 오산이다. 파이게임(Pygame)은 캔버스와 그래픽 그리기, 다채널 사운드 처리, 창과 클릭 이벤트 처리, 충돌 감지 등의 복잡한 작업 없이도 여러 가지 GUI 지향 동작을 편리하게 다룰 수 있는 방편을 제공한다. GUI 앱이라고 할지라도, 모든 앱에 파이게임이 제공하는 기능을 적용하지 못할 수도 있다는 사실을 감안하면서, 파이게임의 기능을 한차례 훑어보는 것도 좋다.

패스리브(Pathlib)
용도: 이제 파이썬의 필수 부분인 모듈을 통해 일관적이면서도 크로스 플랫폼 방식으로 파일 시스템 경로를 처리한다.
장점: 파일 시스템 경로를 다루는 일은 크로스 플랫폼 소프트웨어를 제작할 때 가장 힘들고 괴로운 일 중 하나다. 백슬래시(\) 또는 슬래시(/)인지, 대소문자를 구분 여부 등의 문제 때문이다. 패스리브(Pathlib)는 이러한 부분을 추상화하여 os.path와 같은 라이브러리를 사용할 필요가 없도록 해준다. 파이썬 2의 경우 비 ASCII 경로 이름 처리가 매끄럽지 않으므로 패스리브는 파이썬 3에서만 사용하는 것이 좋다.

넘파이(NumPy)
용도: 통계, 선형 대수, 행렬 계산, 금융 운용 등을 포함한 과학 계산과 수학 작업
장점: 금융 시장 분석가나 회계 담당자는 넘파이(NumPy)에 익숙하며, 이를 즐겨 사용한다. 그러나 넘파이의 응용 범위는 수학과 통계를 제외하고도 생각 외로 넓다. 예를 들어 넘파이는 다른 언어를 사용하다 파이썬을 처음 접한 개발자들이 자주 불평하는 파이썬에 다차원 배열 지원을 추가하는 작업을 가장 쉽게, 가장 유연하게 할 수 있는 방법 중 하나다. 다만 모든 요소를 갖춘 완벽한 파이썬 ‘과학-수학’ 기능을 원한다면 넘파이를 표준 항목으로 포함하는 사이파이(SciPy) 라이브러리 및 환경을 사용하는 편이 좋다. 넘파이를 기반으로 하는 정교한 데이터 분석에는 판다스(Pandas)가 있다.

셸(Sh)
하위 프로세스에서 외부 프로그램을 호출하고, 그 결과값을 파이썬 프로그램으로 반환하는 용도 – 만약 호출 프로그램이 네이티브 파이썬 함수에도 마찬 가지의 기능이다.
장점: 모든 포직스(Posix) 호환 시스템에서 셸(Sh)는 최고의 선물이다. 이러한 플랫폼에서 제공되는 모든 명령 줄 프로그램을 파이썬 방식으로 사용할 수 있게 해준다. 더 이상 쓸데없는 작업으로 시간을 낭비할 필요도 없고(OS에 이미 있는 ping을 다시 구현할 필요는 없다), 그 기능을 애플리케이션에 추가 하는 방식에 대해 고민할 필요도 없다. 다만 주의 사항은 이 라이브러리를 통해 전달되는 매개 변수는 정제되지 않는다는 점이다. 따라서 사용자 입력을 그대로 전달하지 않도록 해야 한다.

Reference: http://www.itworld.co.kr/slideshow/89928?slide=10#stage_slide

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s