파이썬을 다루시다 보면 한 번 쯤 GIL에 대해서 들어본 적이 있을 겁니다. 그리고, 이에 대한 문서를 보면, jython이나 iron에는 GIL이 없다는 것을 알 수 있는데요.  이렇게 구현체마다 다른 특성을 가지는 경우가 있어요. 그래서, 버전과 함께 구현체를 확인하는 방법을 알아보려고 해요.

 

 python을 하는데, Jython을 쓰는지 pypy를 쓰는지, cpython을 쓰는지 모르면 말이 안 될 거고요.

 


 이 질문의 답을 보면, platform을 써 보라고 합니다. platform을 import 해 보겠습니다.

 

 

 여기에는, platform identifying data를 얻어오기 위한 모듈임을 알 수 있어요. function API를 통해서, information을 만들어 낸다는 이야기도 같이 덧붙이고 있는데요. 어떤 것이 있는지 훑어보도록 하겠습니다.

 

 

 생각보다 많은 것들이 있는데요. uname도 있습니다. 리눅스에서 uname이 시스템 정보를 가지고 온다는 것을 생각해 보면, 어떤 일을 하는 것인지 짐작해 볼 법 합니다. 이 중에서, 우리가 필요한 것은 python_implementation 메서드 같습니다. 그리고 파이썬 버전을 얻어오기 위해서 python_version 메서드도 써야 할 듯 싶어요.

 

 

 위와 같이 프로그램을 작성해 보겠습니다. 3번쨰 줄에서는 python_implementation() 메서드의 결과를 출력하고, 4번째 줄에서는 파이썬의 version을 출력하는데요.

 

 

 python_implementation 메서드를 보니까, CPython, IronPython, Jython, PyPy 넷이 언급되어 있습니다.

 

 

 그리고 python_version은 major. minor. patchlevel을 리턴합니다. sys.version과 다른 점도 언급이 되어 있는데요. 항상 패치 레벨을 포함한 것을 리턴한다고 되어 있습니다.

 

 

 결과를 보면 위와 같습니다. CPython 구현체를 쓰고, 버전이 3.9.2임을 알 수 있습니다.

 


 pypy는 어떨까요? 다운로드 받아서 pycharm에서 실행시켜 보도록 하겠습니다.

 

 

 먼저, 적당한 위치에 옮겨 놓은 pypy 폴더에 들어가면 pypy3.exe가 있습니다. 이 실행파일이 있는 위치를 잘 기억해 둡니다.

 

 

 다음에, File에서 Settings를 눌러봅시다.

 

 

 그러면, Project:xxx가 나오는 메뉴가 하나 있는데요. 드롭 다운을 눌러보시면 python Interpreter가 있습니다. 느낌상 그것을 설정해야 할 듯 싶군요. 현재는 virtualenv python 3.9로 설정이 되어 있는 상태입니다. 우측에 있는 톱니바퀴를 누르시면 add 인터프리터가 나오는데요. 그것을 눌러줍시다.

 

 

 그러면, 인터프리터를 선택하라는 것이 나올 텐데요. System Interpreter를 선택해 주겠습니다. pypy3.exe는 C 폴더의 pypy3.7 폴더 아래에 있었습니다. 여기에 있는 pypy3.exe를 선택해 주고, OK를 눌러줍니다.

 

 

 그러면, 인터프리터가 2개 추가되었음을 알 수 있어요. 새로 추가된 pypy 3.10을 선택한 다음에 적용을 눌러주시면, 기존에 썼던 가상 환경 python 3.9가 아닌 pypy3.7을 쓰게 됩니다.

 

 

 같은 코드를 실행시켜 보면, PyPy, 3.7.10이 출력됨을 알 수 있습니다.