방금 최신 버전의 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-prompt
IPython 명령에 플래그를 추가하십시오 .
(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을 깨뜨립니다.