sys.modules vs sys.path

๊น€๊ธฐ์šฉยท2020๋…„ 10์›” 24์ผ
1

๐Ÿค” sys๋ž€ ?

sys(System-specific parameters and functions) ๊ณต์‹ ๋ฌธ์„œ ๋ฅผ ์‚ดํŽด๋ณด๋ฉด sys๋ž€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์— ์˜ํ•ด์„œ ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌ๋˜๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ํ•ญ์ƒ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ์ด๋ผ๊ณ  ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค.


์šฐ๋ฆฌ๋Š” import ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๋ชจ๋“ˆ๊ณผ ํŒจํ‚ค์ง€๋ฅผ ์† ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ํŒŒ์ด์ฌ์€ ์–ด๋–ป๊ฒŒ ์ฐพ์•„ ์˜ค๋Š”๊ฒƒ์ผ๊นŒ? ํŒŒ์ด์ฌ์€ ๋‹ค์Œ 3๊ฐ€์ง€ ์žฅ์†Œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ณด๋ฉด์„œ ๋ชจ๋“ˆ๊ณผ ํŒจํ‚ค์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•œ๋‹ค.

  1. โšก๏ธ sys.modules
  2. โšก๏ธ built-in modules
  3. โšก๏ธ sys.path

sys.module ์„ ์ œ์ผ ๋จผ์ € ์ ‘๊ทผํ•˜๊ณ , ๋‘๋ฒˆ์งธ๋กœ built-in modules, ๋งˆ์ง€๋ง‰์œผ๋กœ๋Š” sys.path์—์„œ ์ฐพ๋Š”๋‹ค.


โšก๏ธ sys.modules

ํŒŒ์ด์ฌ์ด ๋ชจ๋“ˆ๊ณผ ํŒจํ‚ค์ง€๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ๋จผ์ € ํ™•์ธ ํ•˜๋Š” ์žฅ์†Œ์ด๋‹ค. dic ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๊ฒฝ๋กœ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

{ ๋ชจ๋“ˆ์ด๋ฆ„: ๋ชจ๋“ˆ๊ฒฝ๋กœ }

โšก๏ธ built-in modules

ํŒŒ์ด์ฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ํŒŒ์ด์ฌ ๊ณต์‹ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด๋‹ค. ์ด๋ฏธ ํŒŒ์ด์ฌ ์„ค์น˜๋•Œ ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ์„ค์น˜ํ•˜์ง€ ์•Š์•„๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.


โšก๏ธ sys.path

๋งŒ์•ฝ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ชจ๋“ˆ๊ณผ ํŒจํ‚ค์ง€๊ฐ€ sys.modules ๊ณผ built-in modules์—๋„ ์—†์œผ๋ฉด ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ณด๋Š” ์žฅ์†Œ๊ฐ€ ๋ฐ”๋กœ sys.path ์ž…๋‹ˆ๋‹ค. list ์ž๋ฃŒ๊ตฌ์กฐ ํ˜•์œผ๋กœ ๊ฒฝ๋กœ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋งŒ์•ฝ ์ด๊ณณ์—์„œ๋„ ๋ชจ๋“ˆ๊ณผ ํŒจํ‚ค์ง€๋ฅผ ์ฐพ์ง€ ๋ชปํ•œ๋‹ค๋ฉด ModuleNotFoundError ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

['',
 '/Users/song-eun-u/anaconda3/bin',
	...
 '/Users/song-eun-u/anaconda3/lib/python3.6/site-packages/IPython/extensions',

โšก๏ธ sys ๋ชจ๋“ˆ์˜ ์œ„์น˜๋Š”?

import sys
...
print(sys)
----์ถœ๋ ฅ๊ฒฐ๊ณผ----
<module 'sys' (built-in)>

sys๋ฅผ import ํ•œ๋’ค์— ์ถœ๋ ฅํ•ด ๋ณด๋ฉด built-in modules ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ ์„ค์น˜์—†์ด ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


โšก๏ธ Absolute Path vs Relative Path

์ปดํ“จํ„ฐ์—์„œ ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ผ๋•Œ โšก๏ธ์ ˆ๋Œ€๊ฒฝ๋กœ์™€ โšก๏ธ์ƒ๋Œ€๊ฒฝ๋กœ๋กœ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.


โšก๏ธ Absolute Path (์ ˆ๋Œ€๊ฒฝ๋กœ)

์ ˆ๋Œ€๊ฒฝ๋กœ๋ž€ ์ตœ ์ƒ์œ„ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ถ€ํ„ฐ ํŒŒ์ผ์˜ ์œ„์น˜๊นŒ์ง€์˜ ๋ชจ๋“  ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฒฝ๋กœ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

manage.py ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์ ˆ๋Œ€๊ฒฝ๋กœ๋กœ ํ‘œ์‹œํ•œ ์˜ˆ

/Users/Amuse/Desktop/Dev/miniProjects/blog/manage.py

โšก๏ธ Relative Path (์ƒ๋Œ€๊ฒฝ๋กœ)

์ƒ๋Œ€๊ฒฝ๋กœ๋ž€ ํ˜„์žฌ ์œ„์น˜ํ•ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ธฐ์ ์œผ๋กœ ์ƒ๋Œ€์ ์œผ๋กœ ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

๋งŒ์•ฝ ํ˜„์žฌ์œ„์น˜๊ฐ€ ๋ธ”๋กœ๊ทธ์ด๋ผ๋ฉด

/Users/Amuse/Desktop/Dev/miniProjects/blog/

'../' ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ(miniProjects) ๋ฅผ ํ‘œ์‹œํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.

../

'../../' ๋‘๋‹จ๊ณ„ ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ(Dev) ๋ฅผ ํ‘œ์‹œํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.

../../

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

0๊ฐœ์˜ ๋Œ“๊ธ€