[python] IPython의 매직 % paste는 어떻게 작동합니까?

이미 들여 쓰기 된 Python 코드 / 전체 함수 및 클래스를 IPython에 복사하고 싶습니다. 들여 쓰기를 시도 할 때마다 다음과 같은 오류 메시지가 나타납니다.

IndentationError: unindent does not match any outer indentation level (<ipython-input-23-354f8c8be51b>, line 12)

If you want to paste code into IPython, try the %paste and %cpaste magic functions.



답변

IPython에 직접 복사 할 수 없습니다. 단계는 다음과 같습니다.

  1. IPython에 복사하려는 줄을 클립 보드에 복사합니다.
  2. %pasteIPython에 들어가십시오
  3. 엔터 키를 치시오
  4. 이익!

답변

단계에 대한 설명 :

  • 먼저 대상 라인을 클립 보드에 복사합니다.

  • iPython 프롬프트에 다음을 입력합니다.

    • Tkinter의 경우 : 다음을 입력하십시오. %paste
    • 그렇지 않으면 : 입력 %cpaste
  • 붙여 넣기 (Ctrl-V)하고 Enter 키를 누릅니다.

  • 그런 다음 입력 --하고 Enter 키를 누르십시오.

예를 들면 :

In [1]: %cpaste
Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
:for l in "Hello World":
:    print l,
:--
H e l l o   W o r l d


답변

현재 Ipython 5 당신이 어떤 마법의 명령을하지 않아도, 그냥 붙여 넣기

ipython5

덕분에 prompt_toolkit, IPython지금 지원

  • 입력 할 때 구문 강조
  • 실제 여러 줄 편집 (위쪽 및 아래쪽 화살표 키가 줄 사이에서 이동)
  • 들여 쓰기를 중단하거나 코드를 즉시 실행하지 않고 여러 줄 붙여 넣기
  • 더 나은 코드 완성 인터페이스 (더 개선 할 계획) 선택적 마우스 지원

여기에서 더 자세히

ipython최신 버전으로 업그레이드하려면

pip install ipython --upgrade 


답변

%paste 필요합니다 Tkinter. 우분투에있는 경우 다음을 통해 설치할 수 있습니다.

sudo apt-get install python-tk

Python3을 사용하는 경우

sudo apt-get install python3-tk

그런 다음 ipython을 다시 시작하고 사용 %paste하여 클립 보드에서 붙여 넣습니다.


답변

유용한 답변 중 하나가 주석에서 손실되었으므로 다른 유용한 IPython 매직 기능에 대한 참조를 추가하면서 다시 설명하고 싶었습니다.

먼저 @EOL이 말한 것을 다시 말하면 OP의 문제를 해결하는 한 가지 방법은 먼저 실행 %autoindent하고 붙여 넣기를 수행하여 자동 들여 쓰기를 끄는 것 %paste입니다 (물론을 사용하는 경우에는 필요하지 않음 ).

이제 여기에 이미있는 것에 더 많은 정보를 추가하기 위해 IPython의 또 다른 유용한 모드는 %doctest_mode문서 문자열에서 예제 붙여 넣기 및 테스트 스 니펫을 복사 할 수 있도록하는 것입니다. 이것은 또한 프롬프트 문자열을 먼저 제거하지 않고도 문서 및 온라인 포럼에서 찾을 수있는 대화 형 파이썬 세션 출력을 실행하는 데 유용합니다.


답변

Python 3을 사용하는 우분투 사용자의 경우.

python-tk파이썬 2입니다.

%pastePython 3에서 작업 하려면 python3-tk패키지를 설치하십시오 .

sudo apt-get install python3-tk


답변