Python과 IPython의 차이에 대해 공부하다가 혼동이 생겨 포스팅으로 내용을 정리하고자 한다.
Python은 이전 포스팅에서 다룬 것 처럼, 고급 프로그래밍 언어 중 하나이다. 그렇다면 IPython은 무엇일까?
Interactive Python(Ipython)으로 2001년 페르난도 페레즈가 CLI(Command Line Interface)로 개발했다. IPython은 복수의 프로그래밍 언어에서 상호작용적인 컴퓨팅을 하기 위한 명령 셸이며 파이썬 프로그래밍 언어용으로 처음 개발되었다. 자가 검사, 대화형 매체, 셸 문법, 탭 완성, 히스토리를 제공한다.
IPython은 다음 기능을 제공한다:
- 상호작용 셸 (터미널 및 Qt 기반).
- 코드, 텍스트, 수학식, 인라인 플롯, 기타 미디어를 지원하는 브라우저 기반 노트북 인터페이스
- 상호작용 데이터 시각화 및 GUI 툴킷 이용 지원.
- 자체 프로젝트로 로드하기 위한 유연하고 임베디드 가능한 인터프리터
- 병렬 컴퓨팅용 도구
[http://ipython.org/ipython-doc/3/overview.html][ipython.org]
Interactive
Interactive = “상호작용을 하는, 상호적인”
Ipython을 이용하면 다음과 같은 기능을 이용할 수 있다.
- tab key를 통해 자동 완성
- 실시간으로 object 내 확인
- system shell에 바로 접근해 system상의 command 실행
- session의 command history 제공
- ipython 자체 command 제공 이러한 Interactive(상호적인)기능들을 통해 효율적인 Python code 작성이 가능하다.
Decoupled two-process model
Ipython은 분리된 두 프로세스 통신 모델로서, 여러 클라이언트가 컴퓨팅 커널, 특히 주피터와 함께 제공되는 웹 기반 노트북에 연결할 수 있다.
자세한 내용은 공식문서 참고…
Interactive parallel computing
multicore CPU 와 같은 병렬 처리 구조의 HW들이 증가함에 따라 ipython도 이에 맞게 architecture를 가져오고 있다. —
jupyter Notebook과 Ipython 의 관계?
정확히 말하자면, IPython은 현재 Jupyter의 커널 중 Python부분에 해당한다.
Ipython Notebook은 Interactive computational Environment, 즉 코드의 실행과 문서 작성, 통계, 그래프, 미디어 자료를 담을 수 있는 환경을 말한다. 이러한 Ipython Notebook이 현재의 Jupyter로 진화(?)하게 되었고, 지금의 Jupyter Notebook은 Python 뿐만 아니라 약 40개(R, Julia, Scala, etc)의 언어를 사용할 수 있다.
Jupyter 환경에서 Python code를 Interative하게 작업, 코드 실행을 하기 위해 Ipython Kernel이 필요한 것이다.
Jupyter Kernel중에는 IPython(Kernel Zero라고 함) 외에도 100여개가 넘는 커널들이 존재한다. C++, C#, Ruby, Go, Typescript와 같은 프로그래밍 언어 외에도 powershell이나 SQL, Node.js, Torch, Ansible와 같은 여러 툴과 관련된 커널도 있다
IPython은 Jupyter와는 별개로 발전하고 있으며, 업데이트된 IPython은 Jupyter에도 반영되고 있다
Reference [http://ipython.org/ipython-doc/3/overview.html][ipython.org] [ipython.org]: http://ipython.org/ipython-doc/3/overview.html [https://velog.io/@log327][velog.io/@log327] [velog.io/@log327]: https://velog.io/@log327/IPython%EA%B3%BC-Jupyter%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%8B%A4%EB%A5%BC%EA%B9%8C-