Ipython: IPython ๋‚ด์—์„œ ํ˜„์žฌ ipynb ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์•Œ์•„๋‚ด๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2017๋…„ 01์›” 05์ผ  ยท  15์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ipython/ipython

iPython ๋‚ด์—์„œ ํ˜„์žฌ ipynb ํŒŒ์ผ์„ ์•Œ์•„๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์‚ฌ์šฉ ์‚ฌ๋ก€: IPython ๋‚ด์—์„œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ ๋ฌธ์„œํ™”ํ•˜๊ธฐ ์œ„ํ•ด IPython ๋‚ด์—์„œ ์ด์ƒ์ ์œผ๋กœ๋Š” ๊ฒฐ๊ณผ ํด๋”์— IPython ๋…ธํŠธ๋ถ์„ ๋ณต์‚ฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋กœ ์›น์„ ๊ฒ€์ƒ‰ํ•œ ๊ฒฐ๊ณผ ๊ทธ๋Ÿฌํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๋งŽ์€ ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•˜์ง€๋งŒ stackoverflow์— ์ œ์‹œ๋œ ์†”๋ฃจ์…˜์€ ๋ชจ๋‘ ์•ฝ๊ฐ„ ํ•ดํ‚น๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ์ด๋ฏธ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์‹ค๋ก€์ง€๋งŒ ์ด๊ฒƒ์œผ๋กœ:

!echo %cd% # under windows
!pwd # under linux/mac

์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.
์žฌ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

myInfo01 = !echo %cd% # under windows
myInfo02 = !pwd # under linux/mac

๋ชจ๋“  15 ๋Œ“๊ธ€

์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ํ•ดํ‚น ์—†์ด๋Š” ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค(Python ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” Javascript ํ‘œ์‹œ).

์ปค๋„(์ด ๊ฒฝ์šฐ IPython)์„ ์‚ฌ์šฉํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋‹จ์ผ ํŒŒ์ผ์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŒŒ์ผ์ด ํ•˜๋‚˜๋ผ๋„ ๋…ธํŠธ๋ถ์ด ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋…ธํŠธ๋ถ์ด๋”๋ผ๋„ ๋…ธํŠธ๋ถ์ด ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์žˆ๋”๋ผ๋„ ๋™์ผํ•œ ์‹œ์Šคํ…œ์— ์žˆ์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋™์ผํ•œ ์‹œ์Šคํ…œ์— ์žˆ๋”๋ผ๋„ ํŒŒ์ผ ๊ฒฝ๋กœ๊ฐ€ IPython ์ปจํ…์ŠคํŠธ์—์„œ ์˜๋ฏธ๊ฐ€ ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๊ฒƒ์ด ๋ง์ด ๋˜๋”๋ผ๋„ Jupyter ํ”„๋กœํ† ์ฝœ์€ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋„๋ก ์„ค๊ณ„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹จ๊ธฐ ๋˜๋Š” ์žฅ๊ธฐ์ ์œผ๋กœ ์ด ์ถ”์ƒํ™”๋ฅผ ๋ณ€๊ฒฝํ•  ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์™ธ๋ถ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ๋…ธํŠธ๋ถ ์„œ๋ฒ„ ์—†์ด ๋…ธํŠธ๋ถ์„ ์‹คํ–‰ _ํ•  ์ˆ˜_ ์žˆ์œผ๋ฉฐ ๋™์‹œ์— ๋…ธํŠธ๋ถ๋„ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. jupyter nbconvert --execute --output-dir='results/' ์˜ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ฆ‰์‹œ ์ข…๋ฃŒํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์ด ์ฃผ์ œ๊ฐ€ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ฒ ์ €ํ•˜๊ฒŒ ๋…ผ์˜๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ์ •์„ ๋” ์ž˜ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ† ๋ก ์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค๋„์ด ์‹œ์ž‘๋˜์ž๋งˆ์ž iPython ํ™˜๊ฒฝ์ด ์˜ˆ๋ฅผ ๋“ค์–ด IPython ๋ชจ๋“ˆ ๋‚ด๋ถ€์—์„œ python ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๋Ÿฌ๋ฉด ์ด ๋ณ€์ˆ˜๋Š” iPython ๋…ธํŠธ๋ถ์˜ URL๊ณผ ๊ฐ™์ด ์ปค๋„์ด ์–ด๋–ป๊ฒŒ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ณด์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ๋…ผ์˜ํ•œ ๊ณณ์€ ํŠน๋ณ„ํžˆ ์—†๊ณ  ์—ฌ๋Ÿฌ ๊ณณ์— ์žˆ์ง€๋งŒ ์ „์— ๋ณธ ๋˜ ๋‹ค๋ฅธ ๋น„์œ ๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ์ฑ… ์ž‘๊ฐ€์ž…๋‹ˆ๋‹ค. ๋…์ž๋Š” ์ •๊ธฐ์ ์œผ๋กœ ํ•œ ๊ฐ€์ง€๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์บ๋ฆญํ„ฐ๋ฅผ ์‹๋ณ„ํ•  ๋•Œ ์ฃผ์ธ๊ณต์ด ์ž์‹ ๊ณผ ๋™์ผํ•œ ๋ˆˆ ์ƒ‰๊น”์„ ๊ฐ–๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•ฉ๋‹ˆ๊นŒ? ์ฑ… ์ž‘๊ฐ€๋กœ์„œ ๋‹น์‹ ์€ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ ๊ฐœ์ธ์— ๋Œ€ํ•œ ๋Œ€๋‹ต์€ ๋ถ„๋ช…ํ•˜์ง€๋งŒ ๋Œ€๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

10๊ฐœ์˜ ๋ˆˆ ์ƒ‰๊น”์„ ๊ฐ€์ง„ 10๊ฐœ์˜ ๋ฒ„์ „์„ ์ธ์‡„ํ•˜๊ณ  ๋…์ž์—๊ฒŒ ์„ ํƒํ•˜๋„๋ก ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋…์ž๋Š” _ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค_.

IPython ์ปค๋„์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

์ปค๋„์€ ๋ฌด์—‡์„ ์‹œ์ž‘ํ–ˆ๋Š”์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์‹œ์ž‘๋œ ๊ฒƒ๋“ค์€ env ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด _์‹œ๋„_ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด ์ปจํ…์ŠคํŠธ์—์„œ๋Š” ์˜๋ฏธ๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋…ธํŠธ๋ถ์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŒŒ์ด์ฌ์ด ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์œ ์ผํ•œ ๋ชฉ์ ์ธ ์‚ฌ๋ฌผ(์ปค๋„)์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ณ  ์—†์„ ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ํŒŒ์ด์ฌ์ผ ์ˆ˜๋„ ์žˆ๊ณ  ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ์— ์ด๋ฏธ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ฑฐ๋‚˜ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋ช… ๋™์•ˆ ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ์— ์—ฐ๊ฒฐ๋  ์ˆ˜๋„ ์žˆ๊ณ  ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฐ๊ฐ์˜ ๊ฒฝ์šฐ์— ์ปค๋„์— ์ฒจ๋ถ€๋œ ๋ฌธ์„œ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด ํ™•์‹คํ•œ ๋Œ€๋‹ต์„ _๊ฐ€๋Šฅํ• _ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ผ๋ฐ˜์ ์ธ ์‘๋‹ต๊ณผ ๊ทธ๊ฒƒ์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์€ ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์งˆ๋ฌธ์ด ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ ์–ด๋„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ฑ…์„ ์ฝ๋Š” ์‚ฌ๋žŒ์œผ๋กœ์„œ ๋‹น์‹ ์€ ์„ ํƒ์„ ํ•ด์•ผ ํ•˜๊ณ  ์ปค๋„์—๊ฒŒ ๋‹น์‹ ์ด ์ƒ๊ฐํ•˜๋Š” ํŒŒ์ผ ์ด๋ฆ„์ด ์˜ณ๋‹ค๊ณ  ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋…ธํŠธ๋ถ ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋˜๋ฉด ์—ฐ๊ฒฐ๋œ ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๋ฐ๋Š” ์ฃผ๋กœ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์—ฐ๊ฒฐํ•˜์ง€ ์•Š๋Š” ๊ธฐ์ˆ ์ ์ธ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ๋จธ๋ฆฌ ๊ผญ๋Œ€๊ธฐ์—์„œ ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ.

nbconvert๋ฅผ ํ†ตํ•ด ๋…ธํŠธ๋ถ์„ ์‹คํ–‰ํ•  ๋•Œ ์–ด๋–ค ์ด๋ฆ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๊นŒ?

  • ์ž…๋ ฅ์ด stdin์ธ ๊ฒฝ์šฐ?
  • ์ž…๋ ฅ์ด ๋„คํŠธ์›Œํฌ์ธ ๊ฒฝ์šฐ
  • ์ถœ๋ ฅ ๋…ธํŠธ๋ถ =! input_๋…ธํŠธ๋ถ
  • ์—ฌ๋Ÿฌ ๋…ธํŠธ๋ถ์„ ์ž…๋ ฅํ•˜๋Š” "๋ถ๋ถ" ๋ชจ๋“œ์—์„œ.
    ์ฝ˜์†”์„ ๋ถ™์ผ ๋•Œ ์–ด๋–ค ์ด๋ฆ„์„ ์„ค์ •ํ•˜๋‚˜์š”?
    ์ˆ˜์ฒฉ์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋ถ™์ผ ๊ฒฝ์šฐ ์ด๋ฆ„์€ ๋ฌด์—‡์œผ๋กœ ์„ค์ •ํ•˜๋‚˜์š”?

    • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…ธํŠธ๋ถ์„ ์—ฐ์†์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค๋ฉด ์–ด๋–ค ์ด๋ฆ„์„ ์„ค์ •ํ•˜๋‚˜์š”?

    • ์—ฌ๋Ÿฌ ๋…ธํŠธ๋ถ์„ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•œ๋‹ค๋ฉด ์–ด๋–ค ์ด๋ฆ„์„ ์„ค์ •ํ•˜๋‚˜์š”?

      ํŒŒ์ผ ์‹œ์Šคํ…œ(postgres DB)์ด ์—†๋Š” ํ™˜๊ฒฝ์—์„œ ์ž‘์—…ํ•  ๋•Œ ์ด๋ฆ„์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

      ๋ฐ”์ด๋„ˆ๋ฆฌ ๋˜๋Š” ASCII ? ์ •์˜๋œ ์ธ์ฝ”๋”ฉ ?

      FullPath์˜ ๋…ธํŠธ๋ถ ์ด๋ฆ„์€?

      ๊ฐ™์€ ๊ธฐ๊ณ„์— ์—†๋‹ค๋ฉด?

      ๋…ธํŠธ๋ถ์ด ์ฆ‰์„์—์„œ ์ƒ์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰์ด ์ˆœ์ „ํžˆ ์ธ๋ฉ”๋ชจ๋ฆฌ๋ผ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

      ์ด๋ฆ„์ด ์žˆ๊ณ  print() ์ด๋”๋ผ๋„... ํŒŒ์ผ get์˜ ์ด๋ฆ„์ด ๋ฐ”๋€Œ๋ฉด ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ?

  • ์ปค๋„์ด ๊บผ์ ธ ์žˆ๋Š” ๋™์•ˆ ์ด๋ฆ„์ด ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๊นŒ?
  • ์ปค๋„ ์‹คํ–‰ ์ค‘์— ์ด๋ฆ„์ด ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๊นŒ?
    ํŒŒ์ผ ์ด๋ฆ„์ด ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๋•Œ ์‹ค์‹œ๊ฐ„ ํ˜‘์—… ๋ฐ ํ•˜๋“œ๋งํฌ, ์–ด๋Š ๊ฒƒ์ด ๋งž์Šต๋‹ˆ๊นŒ?

์œ„์˜ ์งˆ๋ฌธ ์ค‘ ์–ด๋Š ๊ฒƒ๋„ ๋‚˜์—๊ฒŒ ๋ช…ํ™•ํ•œ ๋‹ต์ด ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋ฅผ ๊ตฌ์„์—์„œ ๋ง‰์ง€ ์•Š๊ณ  ์˜ฌ๋ฐ”๋ฅด๊ฒŒํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ํ•ฉ์˜๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ๊ฒƒ์ด๊ณ  ๋ชจ๋“  ๊ธฐ์ˆ ์ ์ธ ์–ด๋ ค์›€์ด์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ƒํ™ฉ์„ ์กฐ๊ธˆ ๋ช…ํ™•ํžˆ ํ–ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ํ•ดํ‚น์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๋งŒ์กฑ์‹œํ‚ค๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹ค๋ก€์ง€๋งŒ ์ด๊ฒƒ์œผ๋กœ:

!echo %cd% # under windows
!pwd # under linux/mac

์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.
์žฌ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

myInfo01 = !echo %cd% # under windows
myInfo02 = !pwd # under linux/mac

ํ”„๋กœ์„ธ์Šค CWD๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๊ณ  ๋…ธํŠธ๋ถ์ด ์ €์žฅ๋œ ์œ„์น˜๊ฐ€ ์•„๋‹ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ๋…ธํŠธ๋ถ ์„œ๋ฒ„์—์„œ ๋…ธํŠธ๋ถ์„ ์—ด๊ณ  ์ผ๋ถ€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์•”์‹œ์ ์œผ๋กœ ์ปค๋„์„ ์‹œ์ž‘ํ•˜๋ฉด ipynb ํŒŒ์ผ์ด ์žˆ๋Š” ํด๋”์— pwd๊ฐ€ ๋ถ€์—ฌ๋œ๋‹ค๋Š” ๊ฒƒ์ด ์ตœ์†Œํ•œ ๋ณด์žฅ๋ฉ๋‹ˆ๊นŒ?

ipython์ด ๋ชจ๋“  ์ด์ƒํ•œ ์—ฃ์ง€ ์ผ€์ด์Šค๋ฅผ ๋งˆ์ˆ ์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด๋„ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋žŒ๋“ค์ด ์‹ค์ œ๋กœ ๊ด€์‹ฌ์„ ๊ฐ–๋Š” _simple_ ์ผ€์ด์Šค์— ๋Œ€ํ•ด ์ด์™€ ๊ฐ™์€ _simple_ ๊ทœ์น™์„ ๊ฐ–๋Š” ๊ฒƒ์„ ์ค‘๋‹จํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: ๋…ธํŠธ๋ถ + ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ๋™์ผํ•œ ํด๋”๋ฅผ ํ•™์ƒ์—๊ฒŒ)

์ƒˆ๋กœ์šด ๋…ธํŠธ๋ถ ์„œ๋ฒ„์—์„œ ๋…ธํŠธ๋ถ์„ ์—ด๊ณ  ์ผ๋ถ€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์•”์‹œ์ ์œผ๋กœ ์ปค๋„์„ ์‹œ์ž‘ํ•˜๋ฉด ipynb ํŒŒ์ผ์ด ์žˆ๋Š” ํด๋”์— pwd๊ฐ€ ๋ถ€์—ฌ๋œ๋‹ค๋Š” ๊ฒƒ์ด ์ตœ์†Œํ•œ ๋ณด์žฅ๋ฉ๋‹ˆ๊นŒ?

์•„๋‹ˆ.

์ปค๋„์ด ipynb์™€ ๋™์ผํ•œ ์‹œ์Šคํ…œ์— ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์œผ๋ฉฐ, ipynb ํŒŒ์ผ์ด ์กด์žฌํ•˜๊ฑฐ๋‚˜, ์กด์žฌํ•˜๊ฑฐ๋‚˜, ๊ณ ์œ ํ•˜๊ฑฐ๋‚˜, ๊ณ ์œ ํ•œ ๊ฒฝ๋กœ๋ฅผ ๊ฐ–๊ฑฐ๋‚˜, ์‹ฌ์ง€์–ด ํŒŒ์ผ์ด ๋  ๊ฒƒ์ด๋ผ๋Š” ๋ณด์žฅ๋„ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ: Google ๋“œ๋ผ์ด๋ธŒ์—์„œ ์‹ค์‹œ๊ฐ„ ํ˜‘์—….

๋‚ด ์งˆ๋ฌธ์„ ์ถฉ๋ถ„ํžˆ ๊ณต์‹ํ™”ํ•˜์ง€ ์•Š์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. 200๋ช…์˜ ํ•™์ƒ๋“ค์€ ๋Œ€๋ถ€๋ถ„ ์ž์‹ ์˜ ๋žฉํ†ฑ์— Conda๋ฅผ ์„ค์น˜ํ•˜์—ฌ Python ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์—๊ฒŒ ์ปดํ“จํ„ฐ ์—ฐ์Šต์„ ๋…ธํŠธ๋ถ๊ณผ ํด๋”์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํŒŒ์ผ๋กœ ๊ฑด๋„ค์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค ์ค‘ ํ•˜๋‚˜๋Š” ๋…ธํŠธ๋ถ์„ ํฌ์ŠคํŠธ๊ทธ๋ ˆ์Šค DB์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ณ , ๋‘˜์€ ๋…ธํŠธ๋ถ์ด ์žˆ๋Š” ๋…ธํŠธ๋ถ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์—์„œ ์ปค๋„์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ธ ๋ช…์˜ ํ•™์ƒ์ด ํ•จ๊ป˜ Google ๋“œ๋ผ์ด๋ธŒ์—์„œ ์‹ค์‹œ๊ฐ„ ๊ณต๋™ ์ž‘์—…์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 6๋ช…์˜ ํ•™์ƒ๋“ค์€ ๋‹น์‹ ์ด ์ง€๊ธˆ๊นŒ์ง€ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์„ ์ˆ˜๋„ ์žˆ๊ณ  ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์„ ์ˆ˜๋„ ์žˆ๋Š” ๋‹ค๋ฅธ ์ผ์„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ฃผ๋กœ ์ง€์นจ์„ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋”ฐ๋ฅด๊ณ  ์ž์‹ ์˜ ๋…ธํŠธ๋ถ(Windows, OS X ๋˜๋Š” Linux)์—์„œ ํด๋”์˜ ์••์ถ•์„ ํ’€๊ณ  _same_ ๋…ธํŠธ๋ถ์—์„œ ๋…ธํŠธ๋ถ ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•  190๋ช…์˜ ํ•™์ƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(๋…ธํŠธ๋ถ ์„œ๋ฒ„ ํƒ์ƒ‰๊ธฐ ๋˜๋Š” ๋…ธํŠธ๋ถ ํŒŒ์ผ์„ ๋‘ ๋ฒˆ ํด๋ฆญ)ํ•˜๊ณ  ์ฒซ ๋ฒˆ์งธ ์…€์„ ์‹คํ–‰ํ•˜์—ฌ ์ƒˆ ์ปค๋„(๋™์ผํ•œ ๋…ธํŠธ๋ถ์—์„œ ๋‹ค์‹œ)์„ ์•”์‹œ์ ์œผ๋กœ ์‹œ์ž‘ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” cwd๊ฐ€ _๊ทธ_ํ•™์ƒ๋“ค์—๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. os.getcwd() ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•„์„œ ~15๋ช…์˜ ํ•™์ƒ์ด ๋‚ด ์‚ฌ๋ฌด์‹ค์— ์˜ฌ๊นŒ์š”? ์•„๋‹ˆ๋ฉด 50-100์— ๊ฐ€๊นŒ์›Œ์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ฃผ๋กœ ์ง€์นจ์„ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋”ฐ๋ฅด๊ณ , ์ž์‹ ์˜ ๋žฉํ†ฑ(Windows, OS X ๋˜๋Š” Linux)์—์„œ ํด๋”์˜ ์••์ถ•์„ ํ’€๊ณ , ๊ฐ™์€ ๋žฉํ†ฑ์—์„œ(๋…ธํŠธ๋ถ ์„œ๋ฒ„ ํƒ์ƒ‰๊ธฐ ๋˜๋Š” ๋…ธํŠธ๋ถ ํŒŒ์ผ์„ ๋‘ ๋ฒˆ ํด๋ฆญ)ํ•˜๊ณ  ์ฒซ ๋ฒˆ์งธ ์…€์„ ์‹คํ–‰ํ•˜์—ฌ ์ƒˆ ์ปค๋„(๋™์ผํ•œ ๋…ธํŠธ๋ถ์—์„œ ๋‹ค์‹œ)์„ ์•”์‹œ์ ์œผ๋กœ ์‹œ์ž‘ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, os.cwd() ๋˜๋Š” c = !cwd ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ๋งฅ๋ฝ์—์„œ ๊ทธ๋“ค์—๊ฒŒ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ _์ผ๋ฐ˜์ ์ธ_ ์‚ฌ์šฉ ์‚ฌ๋ก€๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ์ด ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ช…์‹œ์ ์ธ ๋ณด์ฆ์œผ๋กœ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด ๋ฒ„๊ทธ ์ถ”์ ๊ธฐ์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•  ๋•Œ ์ฃผ์˜ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์‚ฌ๋žŒ๋“ค์ด ๊นŠ์ด ์žˆ๊ฒŒ ์ฝ์ง€ ์•Š์œผ๋ ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์— ๊ด€์‹ฌ์„ ๊ฐ€์ ธ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ†ตํ•ฉ ๋ฌธ์„œ์—์„œ ์ฒ˜์Œ ์‹คํ–‰๋˜๊ณ  ๋ณ€๊ฒฝํ•˜๊ธฐ ์ „์— os.cwd() ๋Š” ๋…ธํŠธ๋ถ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ์ œ๊ฐ€ ์ฝ”๋“œ์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€

if not 'workbookDir' in globals():
    workbookDir = os.getcwd()
print('workbookDir: ' + workbookDir)
os.chdir(workbookDir)  # If you changed the current working dir, this will take you back to the workbook dir.

์—ฌ๊ธฐ ์žˆ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๋Š” ์ฃผ์–ด์ง„ ๋ฐฐํฌ์—์„œ ์‹ค์ œ๋กœ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ด๋“  ๊ฐ„์— "๋…ธํŠธ๋ถ์˜ ๊ฒฝ๋กœ"์— ์‹ค์ œ๋กœ ์•ก์„ธ์Šคํ•˜๊ธฐ๋ฅผ ์›ํ•˜์ง€ ์•Š๊ณ , ๋ฐฐํฌ์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์€ ์ถ”์ƒํ™”๋ฉ๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ๋…ธํŠธ๋ถ์„ ๊ด€๋ จ ๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜์ ์ด๊ณ  ๊ด‘๋ฒ”์œ„ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค. ์ปค๋„ ๋‚ด์—์„œ ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•œ ์ถ”์ƒ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ํ•„์š”ํ• ๊นŒ์š”? ๊ทธ๋Ÿฌ๋ฉด ๋…ธํŠธ๋ถ์˜ ์ผ๋ถ€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ์•ก์„ธ์Šค API๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๋ฐฐํฌ(์˜ˆ: ๋…ธํŠธ๋ถ ์„œ๋ฒ„ ์„ค์น˜)์˜ ์ฑ…์ž„์ด ๋ ๊นŒ์š”? ๊ทธ๋Ÿฌ๋ฉด ๋กœ์ปฌ ๋…ธํŠธ๋ถ ์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋…ธํŠธ๋ถ๊ณผ ๊ด€๋ จ๋œ ๊ฒฝ๋กœ์—์„œ ์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‹ค์ œ๋กœ ์ œ๊ณตํ•˜๋„๋ก ๊ธฐ๋ณธ ์„ค์ •๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฐฐํฌ์—์„œ๋Š” ๋ณ„๋„์˜ ์ธํ„ฐํŽ˜์ด์Šค(์˜ˆ: ์—…๋กœ๋“œ ๋ฐฉ๋ฒ• ๋˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” URL)๋ฅผ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜ ๋‹จ์ˆœํžˆ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ „ํ˜€ ์ง€์›ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ๋„ˆ๋ฌด ๋Šฆ์—ˆ์ง€๋งŒ Colaboratory๊ฐ€ ์—ฌ๊ธฐ์—์„œ ๊ท€ํ•˜์˜ ์ž‘์—…์„ ๋„์šธ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://colab.research.google.com/notebooks/welcome.ipynb

๋…ธํŠธ๋ถ์ด ์‹œ์ž‘๋  ๋•Œ ์ „์—ญ์— ์‚ฝ์ž…๋œ "_dh"๋ผ๋Š” ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์ด๊ฒƒ์ด ๋…ธํŠธ๋ถ์˜ ๋””๋ ‰ํ† ๋ฆฌ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ง€๊ธˆ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@SurealCereal ์˜ ์†”๋ฃจ์…˜๊ณผ ์œ ์‚ฌ:

if not 'workbookDir' in globals():
    workbookDir = os.getcwd()

๋‚˜๋Š” ์ˆ˜์ž… ์งํ›„ ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

try: ipynb_path
except NameError: ipynb_path = os.getcwd()

'์˜ค๋ฅ˜'๋ผ๋Š” ๋‹จ์–ด์— ๋Œ€ํ•ด ๋ญ”๊ฐ€๊ฐ€ ๊ทธ ์œ„์น˜๋‚˜ ์กด์žฌ๋ฅผ ๋ง์น˜๊ธฐ ์ „์— ๋‘ ๋ฒˆ ์ƒ๊ฐํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋˜๋Š”:

if 'workbookDir' not in globals():

์กฐ๊ธˆ ๋” ์ฝ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰