Pylons
1. 개요
Pylons는 파이썬으로 작성된 오픈 소스 웹 애플리케이션 프레임워크로, 루비 온 레일스의 영향을 받아 개발되었다. Pylons는 자체 개발을 지양하고 서드 파티 도구를 활용하여 기능을 확장하며, URL 디스패처, HTML 생성, 템플릿, 데이터베이스 추상화 등의 기능을 제공한다. Pylons 프로젝트는 repoze.bfg와의 병합을 거쳐 Pyramid 웹 프레임워크로 발전했다.
-
파이썬 웹 프레임워크 -
플라스크 (웹 프레임워크)
플라스크는 Armin Ronacher가 개발한 파이썬 웹 프레임워크로, Werkzeug, Jinja, MarkupSafe 등의 구성 요소를 기반으로 개발 서버, Jinja2 템플릿 엔진, 유닛 테스트 지원 등 다양한 기능을 제공하며, 파이썬 웹 개발 프레임워크 중 높은 인기를 얻고 있다. -
파이썬 웹 프레임워크 -
장고 (웹 프레임워크)
장고는 파이썬으로 작성된 오픈 소스 웹 프레임워크로서, MTV 디자인 패턴을 따르고 빠른 웹 개발과 깔끔한 디자인을 장려하며 다양한 내장 애플리케이션과 외부 패키지를 통한 기능 확장이 가능하다. -
파이썬 소프트웨어 -
패키지킷
패키지킷은 다양한 리눅스 배포판에서 패키지 설치, 업데이트 및 관리를 단순화하기 위해 서로 다른 패키지 관리 시스템을 통합하여 일관된 인터페이스를 제공하는 시스템이다. -
파이썬 소프트웨어 -
PyPy
PyPy는 파이썬의 호환 가능하고 빠른 구현을 목표로 하는 동적 언어 구현 프레임워크이며, RPython을 사용하여 JIT 컴파일러를 생성하고, Python 2.7과 3.10 버전을 지원한다. -
크로스 플랫폼 자유 소프트웨어 -
김프
김프(GIMP)는 GNU 프로젝트에서 개발된 크로스 플랫폼 기반의 무료 오픈소스 래스터 그래픽 편집기로, 다양한 운영체제를 지원하며 풍부한 기능을 제공하지만 사용자 인터페이스에 대한 비판과 일부 기능의 부족함에 대한 평가도 존재한다. -
크로스 플랫폼 자유 소프트웨어 -
Tcl
Tcl은 존 오스터하우트가 개발한 명령어 기반의 프로그래밍 언어로, Tk 툴킷과 결합하여 GUI 스크립팅 환경으로 발전했으며, 다양한 운영체제에서 사용 가능하고 C, C++, Java 등 다른 언어와의 인터페이스를 지원한다.
2. 역사
Pylons 1.0은 WSGI 기반 프레임워크로서 중요한 역할을 했지만, 확장성 측면에서 개선의 어려움이 있었다.
이 시기에 Zope 커뮤니티에서는 Zope 3의 컴포넌트 아키텍처를 활용한 'repoze.bfg'라는 프레임워크가 주목받고 있었다.
2010년, Pylons 프로젝트는 개발 방향을 전환하여 repoze.bfg를 기반으로 차기 버전을 개발하기로 발표했다. 이 결정에 따라 repoze.bfg는 Pylons 프로젝트에 통합되었고, 그 이름을 Pyramid로 변경하게 되었다.
Pyramid는 2011년 1월 30일에 1.0 버전이 출시되었으며, 버전 1.3부터는 파이썬 3 (3.2 이상)과 호환되기 시작했다.
| 버전 | 릴리스일 |
|---|---|
| 1.0 | 2011년 1월 30일 |
| 1.1 | 2011년 7월 22일 |
| 1.2 | 2011년 9월 12일 |
| 1.3 | 2012년 3월 21일 |
| 1.4 | 2012년 12월 18일 |
| 1.5 | 2014년 4월 8일 |
| 1.6 | 2016년 1월 3일 |
| 1.7 | 2016년 5월 19일 |
| 1.8 | 2017년 1월 21일 |
| 1.9 | 2017년 6월 26일 |
2.1. Pylons 프레임워크
Pylons 프레임워크는 파이썬으로 작성된 오픈 소스 웹 애플리케이션 프레임워크이다. 재사용성을 높이고 기능을 개별 모듈로 분리하기 위해 WSGI 표준을 광범위하게 사용한다.
Pylons는 루비 온 레일스의 영향을 많이 받았으며, 주요 구성 요소 중 두 가지인 Routes와 WebHelpers는 레일스 기능을 파이썬으로 재구현한 것이다. Pylons는 "자체 개발 금지" 현상을 기피하며, 타사가 개발한 도구를 기반으로 거의 완성된 스택을 갖춘 것으로 잘 알려져 있다.
Pylons는 Pylons 프로젝트로 발전했으며, Pylons 1.0의 이전 코드는 현재 유지 관리 모드에 있다. 2010년 11월 이후 repoze.bfg와의 병합에 따라, 최신 버전의 Pylons는 원래의 Pylons 1.0과는 실제로 다르다. Pylons 개발자들은 처음에 특정 코드 부분을 다시 작성할 계획이었지만, 새로운 코드가 repoze.bfg와 유사해지는 것을 관찰했고, 이는 Pylons와 repoze.bfg의 병합으로 이어졌다. 이로 인해 repoze.bfg는 Pyramid 웹 프레임워크로 이름이 변경되어 재출시되었다.
2.1.1. 설치 및 구성
Pylons의 공식 설치 방법은 파이썬 패키지 색인(PyPI)을 통한 이지 인스톨을 이용하는 것이다. 대부분의 추가 도구도 일반적으로 같은 방식으로 설치되며, 이지 인스톨은 관련 패키지 종속성도 처리한다. 일부 배포판은 Pylons와 Paste를 패키징할 수도 있지만, 배포판 패키지가 공식 배포판보다 늦을 가능성이 있다. Pylons는 .egg 파일을 .zip으로 이름 변경하고 내용을 추출하여 수동으로 설치할 수도 있다.
Paste는 프로젝트 설정, 테스트 및 배포에 사용된다. 일반적인 INI 파일 구성 형식을 사용하여, Paste는 여러 "프로파일"을 허용한다. 이를 통해 개발자는 대화형 디버거와 같은 Pylons의 민감한 부분을 운영 사용자에게 노출하지 않고 동일한 코드베이스에서 개발 및 배포 설정을 실행할 수 있다.
2.1.2. URL 디스패치
WSGI와 호환되는 다양한 URL 디스패처를 사용할 수 있다. 예를 들어 Selector와 같은 다른 WSGI 호환 디스패처도 사용할 수 있다. 하지만 현재 Pylons에서 가장 널리 사용되는 URL 디스패처는 Routes이다. Routes는 루비 온 레일스(Ruby on Rails)의 URL 디스패칭 방식을 파이썬으로 재구현한 것이다. Routes는 별도의 라이브러리이지만, Pylons에서 사용하기 위해 개발되었으며 Pylons와 밀접하게 연동되어 발전해 왔다.
2.1.3. HTML 생성
Rails의 영향을 받은 구성 요소 중 하나인 WebHelpers는 Routes 설정을 기반으로 URL 매핑 기능을 제공한다. 또한 WebHelpers는 script.aculo.us나 Prototype 라이브러리를 활용하여 자바스크립트 코드를 생성하기 위한 유틸리티 기능도 제공한다.
HTML 폼의 유효성 검사와 생성을 위해서는 [https://formencode.org/ FormEncode]와 [https://formbuild.readthedocs.io/en/latest/ FormBuild]가 사용된다. Mako의 상속 모델을 사용하여 폼을 생성하기 위해 Mako도 일부 사용된다.
2.1.4. 템플릿
마이티(Myghty)는 Pylons 버전 0.9.5까지 기본 템플릿 언어로 사용되었으나, 0.9.6 버전부터 마코(Mako)로 대체되었다. 마이티와 마코는 모두 XML 기반이 아닌 텍스트 기반의 템플릿 언어로, 포함(include), 상속(inheritance), 임의의 파이썬 코드 삽입 기능을 지원한다.
Pylons는 구성 요소 간의 결합도가 낮아 다른 템플릿 언어도 유연하게 사용할 수 있다. 예를 들어, XML 기반의 템플릿 언어인 젠시(Genshi)를 마코나 마이티 대신 사용할 수도 있다.
2.1.5. 데이터베이스 추상화
Pylons에는 기본 데이터베이스 라이브러리가 없다. SQLObject와 SQLAlchemy가 사용된다.
2.2. repoze.bfg와 Pyramid의 탄생
Pylons 프로젝트는 Pylons 2 개발을 진행하는 과정에서, 새로 작성되는 코드가 repoze.bfg와 점점 유사해지는 것을 발견했다. repoze.bfg는 Zope에서 유래한 컴포넌트를 WSGI 애플리케이션에서 사용할 수 있도록 지원하는 프레임워크였다. 이러한 유사성을 바탕으로 Pylons 개발팀과 repoze.bfg 개발팀은 코드베이스와 개발 커뮤니티를 통합하기로 결정했다.
2010년 11월, 두 프로젝트는 통합에 합의했고, 이 결정에 따라 기존의 Pylons 1.0 코드는 유지보수 상태로 전환되었다. 한편, repoze.bfg는 Pyramid라는 새로운 이름으로 변경되어 Pylons 프로젝트의 차세대 웹 프레임워크로 자리 잡게 되었다. 이로써 Pyramid는 Pylons 프로젝트의 공식적인 후속 프레임워크가 되었다.
3. Pyramid 특징
Pyramid는 Zope, Pylons, Django에서 영감을 얻은 미니멀리즘 웹 프레임워크이며, WSGI에 기반을 둔다. 미니멀하고 플랫폼 독립적인 웹 프레임워크로, 영속성에 구애받지 않는다. SQLAlchemy를 통한 SQL 데이터베이스, Zope 객체 데이터베이스, 그리고 NoSQL 데이터베이스(예: CouchDB)와 통합된다.
Pyramid를 사용하면 개발자가 정규 표현식을 사용하여 경로를 정의하고 객체에 매핑할 수 있다. 또한 Zope와 마찬가지로 URL의 각 부분이 파일 시스템의 폴더와 유사하게 다른 객체를 포함하는 계층적 객체 트래버설을 허용한다.
3.1. 버전
버전 1.3부터는 파이썬 3 호환이 되었다. 파이썬 3.2 이상이면 Pyramid를 사용할 수 있다.
| 버전 | 릴리스일 |
|---|---|
| 1.0 | 2011년 1월 30일 |
| 1.1 | 2011년 7월 22일 |
| 1.2 | 2011년 9월 12일 |
| 1.3 | 2012년 3월 21일 |
| 1.4 | 2012년 12월 18일 |
| 1.5 | 2014년 4월 8일 |
| 1.6 | 2016년 1월 3일 |
| 1.7 | 2016년 5월 19일 |
| 1.8 | 2017년 1월 21일 |
| 1.9 | 2017년 6월 26일 |
4. 커뮤니티
Pylons 프로젝트 관련 논의는 주로 구글 그룹스의 메일링 리스트를 통해 이루어진다.
* pylons-discuss on Google Groups
2018년 5월 8일 기준으로 해당 그룹의 정보는 다음과 같다.
* 멤버 수: 2871명
* 월 평균 메시지 수: 25개 (지난 3개월간 평균)