Ipython: 터미널 ipython 및 ipython μ½˜μ†”μ—μ„œ μ—¬λŸ¬ 쀄 μž…λ ₯ μ‹œμž‘

에 λ§Œλ“  2012λ…„ 10μ›” 15일  Β·  14μ½”λ©˜νŠΈ  Β·  좜처: ipython/ipython

qtconsole ( ctrl-enter λ₯Ό 톡해) 및 λ…ΈνŠΈλΆ(μ…€ λ‚΄μ—μ„œ enter 을 톡해)μ—μ„œ ν•œ 쀄 μž…λ ₯을 μ—¬λŸ¬ 쀄 μž…λ ₯으둜 μ „ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 터미널 및 μ½˜μ†” μ§„μž…μ μ— λŒ€ν•΄ 이와 같은 것을 μ–»λŠ” 것이 쒋을 κ²ƒμž…λ‹ˆλ‹€.

ν˜„μž¬ 잠재적인 ν•΄κ²° 방법은 μž…λ ₯의 첫 번째 쀄에 및 if 1: λ₯Ό μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 그러면 λͺ¨λ“  ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ—¬λŸ¬ 쀄 μž…λ ₯이 μ‹œμž‘λ˜μ§€λ§Œ μ•½κ°„ 어색해 λ³΄μž…λ‹ˆλ‹€.

일반적으둜 κ°€λŠ₯ν•œ 경우 μ„œλ‘œ λ‹€λ₯Έ ν΄λΌμ΄μ–ΈνŠΈ 간에 κΈ°λŠ₯을 λ™λ“±ν•˜κ²Œ μœ μ§€ν•˜λŠ” 것이 합리적이라고 μƒκ°ν•©λ‹ˆλ‹€.

ꡬ체적인 예: 각 μ€„μ˜ λμ—μ„œ ctrl-enter λ₯Ό 눌러 qtconsole을 μ‚¬μš©ν•˜μ—¬ λ‹€μŒ μž…λ ₯을 μž…λ ₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

In [2]: print "hello"
   ...: print "this is all one input"
   ...: print "same here..."
   ...: 

ν•΄λ‹Ή 쀄을 μ‹€ν–‰ν•œ λ‹€μŒ 터미널 기반 ipython ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μ‹œμž‘ν•˜κ³  μœ„μͺ½ ν™”μ‚΄ν‘œλ₯Ό λˆ„λ₯΄λ©΄ μ μ ˆν•œ ν”„λ‘¬ν”„νŠΈκ°€ ν‘œμ‹œλ©λ‹ˆλ‹€.

In [1]: print "hello"
print "this is all one input"
print "same here..."

μ‹€ν–‰ν•˜κ³  μ‹€ν–‰ν•  수 μžˆμ§€λ§Œ ν„°λ―Έλ„μ—μ„œ 이와 같은 자유 ν˜•μ‹μ˜ μ—¬λŸ¬ 쀄 μž…λ ₯을 μž…λ ₯ν•  수 μžˆλŠ” 방법이 μ—†μœΌλ―€λ‘œ μ›Œν¬ν”Œλ‘œκ°€ μ–΄μƒ‰ν•©λ‹ˆλ‹€.

이 사싀을 μ•Œλ €μ€€ @michaelpacer μ—κ²Œ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

ctrl+o λ₯Ό λˆ„λ₯΄λ©΄ μž‘λ™ν•©λ‹ˆλ‹€(cmd 및 conemu μ½˜μ†”μ—μ„œ μ‹œλ„).

( λ₯Ό μ‚¬μš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

 In [84]: (
     ...: fig, ax = plt.subplots(1,2)
     ...: ax[0].plot([1,2,3])
     ...: ax[1].plot([3,2,1])
     ...: fig.show()
     ...:

μž…λ ₯이 λλ‚˜λ©΄ 첫 번째 μ€„λ‘œ λŒμ•„κ°€ ( λ₯Ό μ œκ±°ν•˜μ‹­μ‹œμ˜€.

λͺ¨λ“  14 λŒ“κΈ€

λ‚˜λŠ” μš°λ¦¬κ°€ μ—¬κΈ°μ—μ„œ 터미널/읽기 라인의 μ œμ•½μ— λΆ€λ”ͺμΉœλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. λ‚΄κ°€ μ•„λŠ” ν•œ ctrl-enterλ₯Ό κ°μ§€ν•˜λŠ” μ‰¬μš΄ 방법은 μ—†μŠ΅λ‹ˆλ‹€. raw_input() λ₯Ό ν˜ΈμΆœν•˜κ³  λ¬Έμžμ—΄μ΄ λ°˜ν™˜λ˜κ±°λ‚˜ μ‚¬μš©μžκ°€ Ctrl-D λ˜λŠ” Ctrl-Cλ₯Ό λˆ„λ₯΄λ©΄ μ˜ˆμ™Έκ°€ λ°œμƒν•©λ‹ˆλ‹€.

μž₯κΈ° ν”„λ‘œμ νŠΈλ‘œ readline λŒ€μ‹  pyrepl κ³Ό 같은 라이브러리λ₯Ό μ‚¬μš©ν•˜μ—¬ 이 μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이것은 μš°λ¦¬κ°€ μž μ‹œ λ™μ•ˆ 관심을 가지고 μžˆμ—ˆμ§€λ§Œ 아무도 μžμ„Ένžˆ μ‘°μ‚¬ν•˜μ§€ μ•Šμ€ κ²ƒμž…λ‹ˆλ‹€. 또 λ‹€λ₯Έ 방법은 curses λ˜λŠ” urwid와 같은 μœ μ‚¬ν•œ 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ μƒˆ ν”„λ‘ νŠΈμ—”λ“œλ₯Ό κ΅¬μΆ•ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

ν•  수 μžˆλŠ” ν•œ κ°€μ§€λŠ” ctrl-v, ctrl-jλ₯Ό 눌러 μž…λ ₯을 μ‹€ν–‰ν•˜μ§€ μ•Šκ³  쀄 λ°”κΏˆμ„ μž…λ ₯ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. ν„°λ―Έλ„μ—μ„œλ„ μž‘λ™ν•˜κΈ° λ•Œλ¬Έμ— 이것이 Bash 자체의 일뢀라고 μƒκ°ν•©λ‹ˆλ‹€(ctrl-vλŠ” λ‹€μŒ ν•«ν‚€λ₯Ό μ œμ–΄ μ‹œν€€μŠ€λ‘œ μ²˜λ¦¬ν•˜κ³  ctrl-jλŠ” 쀄 λ°”κΏˆ). λ‚˜λŠ” 이것에 λŒ€ν•΄ iTerm2λ₯Ό μ—‰λ§μœΌλ‘œ λ§Œλ“€ κΈ°νšŒκ°€ μ—†μ—ˆμ§€λ§Œ ctrl-enterλ₯Ό κ·Έ 이쀑 μ‹œν€€μŠ€μ— μ–΄λ–»κ²Œ λ“  λ§€ν•‘ν•˜λŠ” 것이 κ°€λŠ₯ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

νŽΈμ§‘: μ΅œμ†Œν•œ iTerm2μ—μ„œ 이것을 λ³΅μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ „μ—­ λ‹¨μΆ•ν‚€λ‘œ μ΄λ™ν•˜μ—¬ ctrl-enterλ₯Ό "16μ§„μˆ˜ μ½”λ“œ 보내기"둜 μ„€μ •ν•œ λ‹€μŒ: 0x16 0x0a

prompt_toolkit λ₯Ό μ‚¬μš©ν•˜μ—¬ μ΄λŸ¬ν•œ μœ ν˜•μ˜ κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

예, μ—”ν„° λ‹¨μΆ•ν‚€λŠ” μ—†μ§€λ§Œ μ—”ν„°λ‘œ 감지할 수 μžˆλŠ” μœ μΌν•œ μ½€λ³΄λŠ” Alt-Enter (λ˜λŠ” Esc, Enter )이며 이미 κ°•μ œ 싀행에 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€(예: κ°œν–‰μ„ μΆ”κ°€ν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€). ν•˜μ§€λ§Œ λ‹€λ₯Έ λ°”λ‘œ κ°€κΈ°λ₯Ό μ‚¬μš©ν•˜μ—¬ 이 μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜λŠ” μ‚¬μš©μž 지정 λ°”λ‘œ κ°€κΈ° λ₯Ό μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν˜„μž¬ IPythonμ—μ„œ 이 μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλŠ” ν•œ 가지 방법은 F2 ν‚€λ₯Ό 눌러 νŽΈμ§‘κΈ°λ‘œ μ΄λ™ν•˜κ³  μ™„λ£Œλ˜λ©΄ λ‚΄μš©μ„ μž…λ ₯에 λ„£λŠ” κ²ƒμž…λ‹ˆλ‹€. $EDITOR ν™˜κ²½ λ³€μˆ˜λ₯Ό μ„€μ •ν•˜μ—¬ μ—΄λ¦¬λŠ” νŽΈμ§‘κΈ°λ₯Ό μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Windowsμ—μ„œ Alt-EnterλŠ” ipython 창을 전체 ν™”λ©΄μœΌλ‘œ λ³€κ²½ν•©λ‹ˆλ‹€.

μ΅œμ‹  ipython 및 prompt_toolkit을 μ‚¬μš©ν•˜κ³  vi-mode λ₯Ό ν™œμ„±ν™”ν•œ 경우 λͺ…령을 μž…λ ₯ν•œ λ‹€μŒ ESC λ₯Ό λˆ„λ₯Έ λ‹€μŒ o λ₯Ό λˆ„λ¦…λ‹ˆλ‹€. 이것은 viμ—μ„œμ™€ 같이 μƒˆλ‘œμš΄ 라인을 생성할 κ²ƒμž…λ‹ˆλ‹€.

이런 μ‹μœΌλ‘œ μ—¬λŸ¬ 쀄 λͺ…령을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

In [29] : %reset -s #----> press `ESC` then `o`
            %run foo.py

μ°Έμ‘°

  1. ipythonμ—μ„œ Vi λͺ¨λ“œ ν™œμ„±ν™”: http://koo.fi/blog/2016/08/04/enable-vi-editing-mode-in-ipython-5/

방금 이것에 λΆ€λ”ͺμ³€μŠ΅λ‹ˆλ‹€. λ‚˜λŠ” μƒˆ 쀄을 λ§Œλ“œλŠ” 데 μ‚¬μš©λ˜λŠ” ctrl-enterκ°€ ν™•μ‹€ν•©λ‹ˆλ‹€!?! κ·ΈλŸ¬λ‚˜μ΄ λ¬Έμ œλŠ” λ‚΄κ°€ ν‹€λ Έλ‹€λŠ” 것을 μ•”μ‹œν•©λ‹ˆλ‹€ :(

또 λ‹€λ₯Έ μ˜΅μ…˜μ€ μ„Έλ―Έμ½œλ‘ μ„ 쀄 ꡬ뢄 기호둜 ν•΄μ„ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 예

%run slow_script.py; !display_notification.sh

λ‚΄ python 슀크립트λ₯Ό μ‹€ν–‰ν•œ λ‹€μŒ 일뢀 bash 슀크립트λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.

νŽΈμ§‘ : 이것은 μ‹€μ œλ‘œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 단지 μ œμ•ˆμΌ λΏμž…λ‹ˆλ‹€.

λ‚˜λŠ” 그것을 μ‚¬μš©ν•˜μ—¬ ;

cv2.imshow('이미지', im) ;
cv2.waitKey(0) ;
cv2.destroyAllWindows()

ctrl+o λ₯Ό λˆ„λ₯΄λ©΄ μž‘λ™ν•©λ‹ˆλ‹€(cmd 및 conemu μ½˜μ†”μ—μ„œ μ‹œλ„).

( λ₯Ό μ‚¬μš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

 In [84]: (
     ...: fig, ax = plt.subplots(1,2)
     ...: ax[0].plot([1,2,3])
     ...: ax[1].plot([3,2,1])
     ...: fig.show()
     ...:

μž…λ ₯이 λλ‚˜λ©΄ 첫 번째 μ€„λ‘œ λŒμ•„κ°€ ( λ₯Ό μ œκ±°ν•˜μ‹­μ‹œμ˜€.

λ‚˜λŠ” 그것을 μ‚¬μš©ν•˜μ—¬ ;

cv2.imshow('이미지', im) ;
cv2.waitKey(0) ;
cv2.destroyAllWindows()

λ‹€μŒκ³Ό 같이 파이썬과 λ§ˆλ²•μ„ ν˜Όν•©ν•  수 μžˆλŠ” 것 같지 μ•ŠμŠ΅λ‹ˆλ‹€.

In [5]: %run test.py ;\
   ...: !echo foo

hi

ctrl+oλ₯Ό λˆ„λ₯΄λ©΄ μž‘λ™ν•©λ‹ˆλ‹€(cmd 및 conemu μ½˜μ†”μ—μ„œ μ‹œλ„).

μ €μ—κ²ŒλŠ” alt+o μž…λ‹ˆλ‹€.

λ‚˜μ—κ²ŒλŠ” ctrl+o

Ctrl+o λŠ” ipython μ—μ„œλŠ” μž‘λ™ν•˜μ§€λ§Œ jupyter console μ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

Ctrl+Oκ°€ μž‘λ™ν•©λ‹ˆλ‹€. 이 λ¬Έμ œλŠ” μ’…λ£Œλ  수 μžˆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰