
ํ์ด์ฌ์ด ๋ชจ๋์ด๋ package๋ฅผ ์ฐพ๊ธฐ ์ํด ๊ฐ์ฅ ๋จผ์ ํ์ธํ๋ ๊ณณ
sys.modules๋ ๋จ์ํ dictionary. ์ด๋ฏธ import๋ ๋ชจ๋๊ณผ package๋ค์ ์ ์ฅํ๊ณ ์์. ์ฆ, ํ๋ฒ import๋ ๋ชจ๋๊ณผ package๋ค์ ํ์ด์ฌ์ด ๋ ๋ค์ ์ฐพ์ง ์์๋ ๋๋๋ก ํ๋ ๊ธฐ๋ฅ ์์. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋ก import ํ๋ ๋ชจ๋์ sys.modules ์์ ์ฐพ์ ์ ์์
๋ง์ง๋ง์ผ๋ก ๋ณด๋ ์ฅ์๊ฐ ๋ฐ๋ก sys.path
sys.path๋ ๊ธฐ๋ณธ์ ์ผ๋ก list์ด๋ฉฐ string ์์๋ค์ ๊ฐ์ง๊ณ ์๋ list. ๊ฐ string ์์๋ค์ ๋ค์ ์ฒ๋ผ ๊ฒฝ๋ก๋ฅผ ๋ํ๋
['',
'/Users/song-eun-u/anaconda3/bin',
'/Users/song-eun-u/anaconda3/lib/python36.zip',
'/Users/song-eun-u/anaconda3/lib/python3.6',
'/Users/song-eun-u/anaconda3/lib/python3.6/lib-dynload',
'/Users/song-eun-u/anaconda3/lib/python3.6/site-packages',
'/Users/song-eun-u/anaconda3/lib/python3.6/site-packages/aeosa',
'/Users/song-eun-u/anaconda3/lib/python3.6/site-packages/IPython/extensions',
'/Users/song-eun-u/.ipython']
ํ์ด์ฌ์ list์ ๊ฐ ๊ฒฝ๋ก๋ฅผ ํ๋ ํ๋ ํ์ธํ๋ฉด์ ํด๋น ๊ฒฝ๋ก์ import ํ๊ณ ์ ํ๋ package๊ฐ ์์นํด ์๋์ง ํ์ธํจ
์ ๋ฆฌ๋ฅผ ํ์๋ฉด, ํ์ด์ฌ์ import ํ๊ณ ์ ํ๋ ๋ชจ๋๊ณผ package๋ฅผ ์ฐพ์๋์ ๋จผ์
sys.modules๋ฅผ ๋ณด๊ณ , ์์ผ๋ฉด ํ์ด์ฌ built-in ๋ชจ๋๋ค์ ํ์ธ ํ๊ณ ๋ง์ง๋ง์ผ๋กsys.path์ ์ง์ ๋์ด ์๋ ๊ฒฝ๋ก๋ค์ ํ์ธํด์ ์ฐพ์ต๋๋ค.
sys.path ์์๋ ๋ชป์ฐพ์ผ๋ฉดModuleNotFoundError์๋ฌ๋ฅผ ๋ฆฌํดํฉ๋๋ค.
sys ๋ ํ์ด์ฌ์ ํฌํจ๋์ด ์๋ ๋ชจ๋
๋ค์ ์ฒ๋ผ sys ๋ชจ๋์ import ํด์ sys.modules์ sys.path ๋ฅผ ์ถ๋ ฅํ ์๋ ์๊ณ ์์ ๋ ๊ฐ๋ฅ
import sys
print(sys.path)
print(sys.modules)
ํ์ด์ฌ์ด ์ค์น๋ ๋ ๋ด์ฅ ๋ชจ๋๋ ๊ฐ์ด ์ค์น๋๋ฏ๋ก path์ ์ ๋ณด๊ฐ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ ํด์ ธ ์์. sys๋ ์ด๋ฏธ built-in ๋์ด์๊ธฐ ๋๋ฌธ์ Built-in ๋ชจ๋์์ ์ฐพ์ ์ ์์
relative path๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฒฝ๋ก์ ๊ธธ์ด๋ฅผ ์ค์ฌ์ค๋ค๋ ์ฅ์ ์ ์์ง๋ง ํท๊ฐ๋ฆฌ๊ธฐ ์ฝ๊ณ ํ์ผ ์์น๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๊ฒฝ๋ก ์์น๋ ๋ณ๊ฒฝ๋์ด์ผ ํ๋ ๋จ์ ์ด ์์. ์ฌ๋งํ ๊ฒฝ์ฐ absolute path ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅ
main.py์์ ์๋๊ฒฝ๋ก๋ก add_and_mutiply๋ฅผ ์ํฌํธ ํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์
>>> ImportError: attempted relative import with no known parent package
main module๋ก ์ฌ์ฉ๋ ๋ชฉ์ ์ ๋ชจ๋๋ค์ ๋ฐ๋์ ์ ๋๊ฒฝ๋ก๋ก ์ํฌํธ๋ฅผ ์ฌ์ฉํด์ผ ํจ. ์ ๋๊ฒฝ๋ก๋ก ์ํฌํธํ ๊ฒฝ์ฐ ๋ฌธ์ ์์ด ์ํฌํธ ๊ฐ๋ฅ
์ ๋๊ฒฝ๋ก์ ์๋๊ฒฝ๋ก ๋ชจ๋ ์ ์์ ์ผ๋ก ์คํ๋ฌ์ผ๋ฉฐ ๊ฒฐ๊ณผ๋ ๋์ผ
์ฐจ์ด์ : add_and_multiply.py๋ main module์ด ์๋๊ธฐ ๋๋ฌธ์ ์ ๋ ๊ฒฝ๋ก๋ ์๋ ๊ฒฝ๋ก๋ ๋ฌธ์ ์์ด ๋์. main module์ด ์๋๋ฉด ์ ๋ ๊ฒฝ๋ก๋ ์๋ ๊ฒฝ๋ก๋ ์๋์ ๋ฌธ์ ์์