인터프리터 고르기

파이썬 현황(2 vs 3)

파이썬 인터프리터를 고를 때면 항상 한가지 문제가 떠오릅니다. “파이썬2를 써야할까 아니면 파이썬3를 써야할까?” 답은 생각처럼 간단하지 않습니다.

이 문제의 기본적인 요지는 다음과 같습니다.

  1. 파이썬2.7이 오랫동안 표준이었다.

  2. 파이썬3에 있었던 상당한 변화 때문에 파이썬3를 좋아하지 않는 개발자들이 많다.

  3. 파이썬2.7은 2020년까지는 필수 보안 업데이트를 받을 것이다. [6].

  4. 파이썬3는 파이썬2가 지난 몇 년간 그랬던 것처럼 계속 진화하고 있다.

이제 왜 이 문제가 쉽지 않은지 알 수 있을 것입니다.

추천

단도직입적으로 말하겠습니다.

이런 경우에는 파이썬3를...

  • 아무렴 어때.

  • 나는 파이썬3를 사랑해.

  • 2건 3건 상관없다.

  • 어떤 것을 써야할지 모르겠다.

  • 변화를 받아들이겠다.

이런 경우에는 파이썬2를...

  • 파이썬2를 사랑하고 파이썬3의 미래에 대해 비관적일 때.

  • 절대 변하지 않는 언어와 런타임으로 소프트웨어의 안정성을 향상시키겠다.

  • 사용하는 소프트웨어가 파이썬2를 사용한다면.

그러면.... 3?

파이썬 인터프리터를 고르는 중이라면, 그리고 따로 생각이 있는게 아니라면, 최신 버젼의 파이썬3.x 사용을 추천합니다. 모든 버젼이 새롭고 향상된 표준 라이브러리 모듈과 보안, 그리고 버그 수정을 제공하고 있기 때문입니다. 개선도 진행 중입니다.

하지만 파이썬3에서는 적절히 쓸 수 있는 다른 대안이 없고, 오로지 파이썬2에서만 돌아가는 라이브러리라든가 아니면 파이썬 2를 너무나도 사랑한다면(나처럼), 파이썬2를 사용할 수밖에 없을 것입니다.

Can I Use Python 3? 에서 확인해보시면, 당신이 사용 중인 소프트웨어가 파이썬3를 사용할 수 없게 만드는 장애물이 있지 않은가 알 수 있습니다.

더 읽을 거리

파이썬 2.6, 2.7, 3에서 모두 돌아가는 코드를 작성하는 것도 가능합니다. 이 안내서는 사소한 것들로부터 시작해 당신이 작성하고 있는 소프트웨어의 종류에 따른 어려운 문제까지 다루고 있습니다. 초보자라면 반드시 신경써야할 대단히 중요한 사항들도 있습니다.

구현

사람들이 파이썬을 이야기할 때는 파이썬 뿐만 아니라 CPython 구현을 의미할 때가 많습니다. 파이썬 은 실제로 다양한 방법으로 구현될 수 있는 언어를 위한 명세서입니다.

CPython

CPython 은 C로 작성된 파이썬 구현의 리퍼런스로서, 파이썬 코드를 가상 머신에 의해 해석되는 중간 바이트코드로 컴파일합니다. CPython은 파이썬 패키지와 C언어의 확장 모듈간에 최고 레벨의 호환성을 제공합니다.

오픈 소스 파이썬 코드를 작성 중이고 폭넓은 사용자 기반을 갖고 싶다면 CPython이 최고입니다. C언어 확장 기능을 쓰는 패키지를 사용하려면 CPython이 유일한 구현 방법입니다.

파이선 언어의 모든 버전은 C언어로 구현됩니다. CPython이 파이썬 구현의 리퍼런스이기 때문입니다.

PyPy

PyPy 는 파이썬 언어의 정적 타입으로만 구현된 파이썬 인터프리터로서 통칭 RPython이라 불립니다. 이 인터프리터의 특징은 just-in-time 컴파일러와 복수의 백엔드(C, CLI, JVM)를 지원한다는 것입니다.

PyPy의 목표는 파이썬의 리퍼런스 구현 방법인 CPython과 최대한의 호환성을 유지하는 동시에 그 성능을 향상시키는 것입니다.

만약 파이썬 코드의 성능을 향상시키고자 한다면, PyPy은 한 번 써볼만한 가치가 있습니다. 벤치마크에서 PyPy는 CPython보다 5배나 빨랐습니다.

PyPy는 파이썬2.7을 지원합니다. 베타로 나온 PyPy3 [1],는 파이썬3를 지원합니다.

Jython

Jython 은 파이썬 코드를 자바 바이트코드로 만들어 JVM(자바 가상 머신)에서 실행시키는 파이썬 구현입니다. 뿐만 아니라 Jython은 자바 클래스를 파이썬 모듈처럼 불러와서 사용할 수 있습니다.

자바 코드베이스를 끌어다 쓸 필요가 있거나 파이썬 코드를 JVM에서 돌릴 필요가 있다면, Jython은 최고의 선택이 될 것입니다.

Jython은 현재 파이썬 2.7까지 지원합니다. [2]

IronPython

IronPython 은 닷넷 프레임워크를 위한 파이썬 구현입니다. 파이썬과 닷넷 프레임워크 라이브러리 둘 다 쓸 수 있고, 파이썬 코드를 닷넷 프레임워크의 다른 언어로 바꿀 수 있습니다.

Python Tools for Visual Studio 는 IronPython을 직접 비쥬얼 스튜디오 개발 환경으로 통합할 수 있습니다. 이는 Windows 개발자들에게 좋은 선택입니다.

IronPython은 파이썬 2.7을 지원합니다. [3]

PythonNet

Python for .NET 은 순정 버젼의 파이썬 설치본과 닷넷 공통 언어 런타임(CLR)을 말끔하게 통합시켜주는 패키지입니다. 이는 위의 IronPython이 취한 방식을 역으로 접근한 것으로, 보다 상호 보완적입니다.

Mono와 함께 사용하면 pythonnet OS X와 리눅스처럼 비Windows 운영체제에 설치된 순정 버젼의 파이썬을 닷넷 프레임워크 안에서 수행될 수 있도록 해줍니다. IronPython과 같이 사용해도 충돌하지 않습니다.

Pythonnet은 파이썬 2.3부터 2.7버젼까지 지원합니다. [#pythonnet_ver]_

[1]http://pypy.org/compat.html
[2]https://hg.python.org/jython/file/412a8f9445f7/NEWS
[3]http://ironpython.codeplex.com/releases/view/81726
[4]https://travis-ci.org/pythonnet/pythonnet
[5]https://ci.appveyor.com/project/TonyRoberts/pythonnet-480xs
[6]https://www.python.org/dev/peps/pep-0373/#id2