파이썬 인터프리터 고르기(3 vs 2)

../_images/34484834733_5b80f65ab1_k_d.jpg

파이썬 현황(3 & 2)

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

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

  1. 현재 대부분의 운영 어플리케이션들은 파이썬3을 씁니다.
  2. 파이썬3는 현재 어플리케이션 운영 배포를 위한 준비가 모두 되어 있습니다.
  3. 파이썬2는 2020년 1월 1일부로 생을 마감했습니다 [6].
  4. "Python" 이라는 브랜드명은 파이썬3와 2를 모두 포함합니다.

추천

주석

파이썬2 대신 파이썬3 의 사용을 강력 추천합니다. 아직도 파이썬2를 운영 환경에서 사용하고 있다면, 당신의 어플리케이션과 인프라스트럭쳐를 업그레이드 하는 것을 고려해보세요. 이미 파이썬3를 사용하고 있다면, 축하드립니다. 당신은 훌륭한 취향을 가진 사람이에요. —케네스 레이츠

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

  • 새 파이썬 어플리케이션에는 파이썬3를 쓰세요.
  • 파이썬을 처음 배우는 분이시라면, 파이썬2.7에 익숙해지는 것은 아주 유용합니다. 하지만 파이썬3를 배우는 데에는 더이상 유용하지 않습니다.
  • 둘 다 배우세요. 둘 다 "파이썬" 입니다.

그러면.... 3?

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

그러하니 파이썬2를 써야만 하는 중요한 이유가 있는 게 아니라면, 그러니까 코드 베이스가 이미 있다거나, 파이썬2에서만 돌아가는 라이브러리가 있다거나, 단순성과 친숙함 때문이거나, 파이썬2를 절대적으로 사랑하거나 파이썬2에 감동받았다거나 하는 이유 때문이라면 파이썬2를 쓰셔도 됩니다. 해롭지 않아요.

더 읽을 거리

파이썬 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] IronPython 3 [4] 는개발 중입니다. 하지만 2020년 9월까지는 사용 불가입니다.

PythonNet

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

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

Pythonnet은 파이썬2.7과 3.5-3.8 버전과 호환됩니다. [5]

[1]https://pypy.org/compat.html
[2]https://hg.python.org/jython/file/412a8f9445f7/NEWS
[3]https://ironpython.net/download/
[4]https://github.com/IronLanguages/ironpython3
[5]https://pythonnet.github.io/
[6]https://www.python.org/dev/peps/pep-0373/#id2