IPython 5 사용시 이상한 쉘 출력 출력 대신

방금 최신 버전의 IPython으로 업그레이드했으며 emacs에서 사용할 때 문제가 있습니다.

일반 터미널에서 사용하면 색상 (색상, 탭 완성 등)에서 잘 작동하지만 출력 대신 M-x eshell또는 M-x shell에서 In [1]:실제로 출력 [?12l[?25h하고로 Out[1]출력됩니다 [J[?7h[?12l[?25h[?2004l[?7hOut[1]:.

어쩌면 IPython에서 사용하는 emacs에서는 사용할 수없는 터미널의 일부 기능 일지 모르지만 어떤 기능인지 알고 싶습니다.

Terminal.app :

In [1]: 2+2
Out[1]: 4

이맥스

[?12l[?25h2+2
[J[?7h[?12l[?25h[?2004l[?7hOut[1]: 4


답변

IPython 5에는 Emacs의 하위 쉘과 호환되지 않는 새로운 터미널 인터페이스가 있습니다. 이를 수정하려면 --simple-promptIPython 명령에 플래그를 추가하십시오 .

(setq python-shell-interpreter "ipython"
    python-shell-interpreter-args "--simple-prompt -i")

설명서에서 :

새로운 인터페이스는 Emacs의 ‘열등한 쉘’기능과 호환되지 않습니다. 이를 계속 사용하려면 --simple-prompt플래그를 Emacs runs 명령에 추가하십시오 . 이 플래그는 대부분의 IPython 기능을 비활성화하며 Emacs를 사용하여 탭 완성과 같은 기능을 제공합니다.

참조 : http://ipython.readthedocs.io/en/stable/whatsnew/version5.html#id1


답변

–simply-prompt를 사용하지 않고 emacs 쉘에서 IPython을 여는 방법이 있습니다

1. pip install rlipython

2. Open IPython in terminal

3. Run import rlipython; rlipython.install()

그 후, 디스플레이 문제없이 emacs 쉘에서 직접 ipython을 열 수 있습니다.

내 경우에는 한 가지 더 문제가 있습니다. 어떤 이유로 든 표시가 올바르게 된 후에도 여전히 일부 멀티 라인 클래스 정의를 emacs 쉘의 ipython에 직접 복사하여 붙여 넣을 수 없었습니다. 내 현재 솔루션은 Ipython % paste 명령을 사용하는 것입니다. 더 나은 접근 방법이 있으면 알려주십시오.

추신 : 우분투 16.04를 사용하고 있습니다. 누군가 MacOS를 사용하면 IPython을 깨뜨립니다.