koodev

'IPython'에 해당되는 글 1건

  1. EIN and virtualenvwrapper

EIN and virtualenvwrapper

Emacs

Emacs와 IPython을 함께 쓰기위한 설정을 만지던 중, 특정 virtualenv와 연동하는 부분에서 좀 막히게 되었다. 완벽한 솔루션은 아니지만 기록해둔다.

초반 삽질: elpy

Emacs Python IDE로 모드 중에 elpy가 눈에 띄었고, IPython관련 기능들도 있길래 이것으로 시작해 보았다. elpy는 pyvenv가 연동되며 자체에서 IPython 프로세스를 실행시키면 해당 pyvenv에 해당하는 IPython interpreter(Jupyter도 가능)가 뜨기 때문에 환경설정과 관련해서는 문제가 전혀 없었다.

하지만 곧 맞닥드린 문제가 있었는데, pyplot등으로 그린 표나 그림 등이 인라인으로 표시되지 않고 임시파일에 기록되어 미리보기(MacOS Preview App)등의 다른 윈도우에서 별도로 표시되는 것이었다.

인라인 표시 기능과 관련하여 한동안 찾아본 결과 org-babel이나 EIN(Emacs IPython Notebook)에서 가능하다는 정보를 알게 되었다.

Inline plot in emacs ipython REPL?

Emacs IPython Notebook

org-babel은 좀 아닌것 같아서 EIN을 들여다보기 시작했다. elpy처럼 자체에서 IPython REPL 프로세스를 띄울 수 있고, elpy에서 안되는 인라인 컨텐츠 표시도 잘 되었다.

하지만 EIN도 문제가 있었는데, 특정 virtualenv를 선택할 수가 없었다. 내 환경에는 virtualenv가 2개 - python3, python2 - 가 있는데 python3 환경에만 물렸다. 이렇게 되면 python3만 쓸 수 밖에 없다. 시스템에 python2랑 3가 둘 다 설치되어 있으면 브라우저 notebook 클라이언트에서는 둘 중 하나를 고를 수 있었는데, 특정 virtualenv와 물리게 되면 하나의 버전만 쓸 수 있다. 그럼 virtualenv에 python을 두개 설치하면? 확인해 본 결과 virtualenv는 하나의 python 버전만 사용하도록 설계되었단다.

Create a virtualenv with both python2 and python3

EIN and Jupyter with virtualenv

그래서 생각해낸 방법은 우선 터미널에서 virtualenv를 띄우고 거기서 Jupyter를 실행시킨 다음에, EIN에서 해당 Jupyter에 접속해서 notebook 환경을 사용하는 것이다. 이렇게 할 경우 터미널을 왔다갔다 해야 하긴 하지만 모든 문제가 해결된다. (해보진 않았지만) virtualenv/Jupyter 두 개 조합을 띄우고 둘 중 하나를 선택해서 들어갈 수도 있을 것 같다.

우선은 터미널을 띄우고 원하는 virtualenv를 활성화시킨다. 그리고 Jupyter를 띄우는데, 포트 번호랑 토큰(또는 암호)을 기록해둔다.

그리고 Emacs로 돌아와서 M-x ein:notebooklist-login 을 실행한다. 위에서 기록해둔 포트 번호와 토큰(또는 암호)를 입력한다. 그리고 M-x ein:notebooklist-open 을 입력하면 위에서 띄워놓은 notebook과 연결된다.

References

'Emacs' 카테고리의 다른 글

Emacs - Python 문서 열람시 멈춤현상  (0) 2019.09.18
Emacs Wdired 모드  (0) 2019.06.29
macOS 에서 Emacs 데몬이 종료되지 않는 문제  (0) 2019.06.07
Create a new file in ido mode  (0) 2019.06.07
Emacs Server setting  (0) 2019.05.15