JMK no matter what

파이썬 쉘 고르기

결론은 결국 ipython 아니면 spyder. bpython 과 dreampie 는 아직 immature 한 것 같고, reinteract 와 pycrust 는 개발이 중단됨. :-( 결국 원래 불만이었던 멀티라인 편집 잘되는 쉘을 쓸순 없는거였나. orz

후보:

제외된 후보:

기준:

  • 히스토리 저장: 타이핑한 모든 커맨드를 저장할 것. output 까지 저장할 수 있으면 더욱 좋음.
  • 히스토리 자동완성: for 치고 검색하면 for 로 시작하는 히스토리 엔트리들 보여주는/선택해 주는 기능.
  • 자동 완성 + 도큐멘테이션 보여주기
  • Matplotlib 통합.
  • 여러 줄 코드 편집.
  • 디버깅 지원
  • 문법 강조.
  • 모듈 바뀌었을 때 자동 리로드 되면 만세.
  • vim keybinding if possible.
  • 활발하게 개발되고 있는가

ipython

scipy 프로젝트의 일부인 인터랙티브 파이썬 쉘. 가장 많이 사용되는듯. 콘솔 모드에서 돌아간다.

  • 히스토리 저장: 쉐도우 히스토리에 지금까지 내린 모든 명령 이 남는다. grep 으로 검색 가능. (단 순차적으로 보는 기능은 없다 ㅡㅡ; 이 뭐..) 이 외에 현재 세션을 %logstart 로 로깅할 수 있다만.. 이건 잘 안하게 되고, ipythonrc 에 자동 로깅 명령 넣어서 세션을 로깅할 수 있다. 이 팁 을 이용하면 자동 로깅할 수 있다.
  • 히스토리 자동완성: 아주 잘 됨.
  • 자동 완성 + 도큐멘테이션 보여주기: 파일 및 폴더 자동완성이 된다. lines = open("../snapshots/EUR 에서 탭 누르면 EUR 로 시작하는 파일들을 보여줌. 기타 모듈 멤버 자동 완성, 클래스 멤버 자동 완성도 되어서 자잘한 타이핑을 덜 수 있다. 도큐멘테이션은 전혀 안 보여준다.
  • 여러 줄 코드 편집: 최대의 문제. 이미 타이핑한거 고칠 수가 없고, 기존에 타이핑한 멀티라인 코드를 히스토리를 거슬러 올라가 편집하려고 하면 상하키도 없이 좌우키로만 움직여야 한다. 그나마 탭 인식 못해서 인덴테이션 에러를 내는 경우가 다수. %ed 를 쓰면 외부 에디터로 연결하는 것은 가능하지만.. 외부 에디터로 열면 쉘 화면이 안보인다. 이거 보고 치는 경우가 굉장히 많기 때문에 엄청난 마이너스.
  • 디버깅 지원: %pdb 옵션을 켜면 익셉션 났을 때 자동으로 pdb 로 들어간다.
  • 문법 강조: 거의 없음. 입력에는 없고, 출력에는 일부 지원된다.
  • 모듈 자동 리로드: 여기 보니까 있다. scipy 홈페이지가 안들어가져서 구글 캐시 링크;;
  • vim keybinding: readline 을 쓰기 때문에 vim 키바인딩 지원됨.
  • 개발 여부: 대세인거 같다. scipy 프로젝트. 거의 매일 활발하게 커밋되고 있다.

spyder

IDE + 인터랙티브 쉘. 매트랩 형태를 그대로 가져왔다. GUI 는 Qt 기반인데.. 폰트 렌더링이 졸래 맘에 안든다.. 이거 고치려면 고생좀 할듯. ㅜ.ㅜ 이걸로 되는듯?

  • 히스토리 저장: 히스토리를 py 파일로 저장해 준다. 최대 줄 수가 있어서 좀 문제. 세션마다 별도의 로그 파일을 쓰게 하는 게 가능한지 알아봐야겠다. 현재 세션을 그대로 저장해 주는 기능이 있어서, 닫았다 열어도 글로벌 네임스페이스가 유지된다. 우왕!
  • 히스토리 자동완성: 아주 잘 됨. 근데 이전 세션
  • 자동 완성 + 도큐멘테이션 보여주기: 모듈/클래스 멤버 자동완성이 된다. 자동완성 선택지가 별도의 창으로 뜨기 때문에 xmonad 에서는 매우 볼썽사납게 됨. :-( 고치는 방법이 있긴 있을텐데..
  • 여러 줄 코드 편집: ipython 보다 더 안좋다. -_-; 한줄씩만 편집할 수 있음. python 기본 REPL 이랑 똑같다.. 다만 내장된 에디터로 별도의 파일을 편집하고 F9 로 실행하면 된다. 대신 그러면 히스토리에 안남는다.. 우하하.. -_-;
  • 문법 강조: 입력에서 괄호 쌍 맞춰 주기 하이라이팅 지원. 그 이상은 없는 듯.
  • 모듈 자동 리로드: 잘 안됨.
  • vim keybinding: 없음.
  • 개발 여부: 한 사람이 개발하고 있다. (대단하다.. --;) 활발하게 개발되고 있는 중.

dreampie

IDLE 이랑 비슷하게 생겼으면서, 아래 코드 편집 창이 따로 있다. 그러니까 옛날 텔넷 프로그램의 대화방 모드라고 하면 이해가 쉬울까? ㅎㅎ 덕분에 멀티라인 코드 편집은 엄청나게 쉽다. 가장 최근에 개발된 물건이라 좀 팬시함. 문법 강조도 이쁘다.

  • 히스토리 저장: 세션 정보를 html 으로 저장해준다! 완전 돋네돋아. 이 html 을 로드해서 리플레이 할 수도 있다. -_-;
  • 히스토리 자동완성: shadow history 는 없는 듯. :( 동일 세션 내에서는 자동완성이 된다. 별도로 히스토리 목록을 보는 기능이 없다.
  • 자동 완성 + 도큐멘테이션 보여주기: 자동 완성은 잘 된다. 모듈, 클래스 전부 다 되고, 패러미터 목록도 보여준다. 단 docstring 은 안 보여줌.
  • Matplotlib 통합: 플로팅 잘 된다.
  • 여러 줄 코드 편집: 최고. 우왕. 굳.
  • 디버깅 지원: 없음.
  • 문법 강조: 입력도 되고 출력도 된다.
  • 자동 리로드: 없음
  • vim keybinding if possible: 없음.
  • 활발하게 개발되고 있는가: 개발은 느린 편.
2010-08-07 12:24:43 | JM | /writings/cs/ | 4 Comments
Toivoa
2010-08-08 22:22:57
만들어서 써야겠다
scheme
2010-08-09 16:15:50
만들어서 쓰면 간단.
Being
2010-08-09 18:13:21
개 to the 발
JM
2010-08-10 23:54:32
이분들이.. 차라리 ipython 에 패치 커밋을 하겠습니다. 근데 콘솔 프로그램이라 멀티라인 에디팅을 쉽게 할 방법이 안보여. 난 안될거야 아마.

Leave a comment