- ๋ชจ๋ : ํจ์๋ ๋ณ์ ๋๋ ํด๋์ค๋ฅผ ๋ชจ์๋์ ํ์ผ
๊ทธ๋ผ import ๋ฅผ ํตํด ์ด๋ป๊ฒ ๋ชจ๋์ด๋ ํจํค์ง๋ฅผ ์ฐพ๋์ง ์์๋ณด์.
ํ์ด์ฌ์
1. sys.modules
2. built-in modules
3. sys.path
์ด 3๊ฐ์ง๋ฅผ ์์๋๋ก ์ดํด๋ณธ๋ค.
1๋ฒ์ ๊ฐ์ฅ ๋จผ์ ํ์ธํ๋ ๊ณณ, 2๋ฒ์ ํ์ด์ฌ์์ ์ ๊ณตํ๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค 3๋ฒ์ ๋ง์ง๋ง์ผ๋ก ๋ณด๋ ์ฅ์
๋ชจ๋์ด๋ ํจํค์ง๋ฅผ ์ฐพ๊ธฐ์ํด ์ฐ์ ์ ์ผ๋ก ์ดํด๋ณด๋ ์์ญ์ผ๋ก dictionary ํํ๋ก ๋์ด ์๋ค.
ํ์ด์ฌ์์ ์ ๊ณตํ๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค ์ด๋ค.
ํ์ด์ฌ ์ธํฐํ๋ฆฌํฐ์๋ ๋ง์ ๋ด์ฅ ํจ์๊ฐ ์๋ค.print(), float(), int() ๋ฑ
๋ง์ง๋ง์ผ๋ก ์ดํด๋ณด๋ ์์ญ์ผ๋ก ๋ฆฌ์คํธ ๊ตฌ์กฐ์ด๋ฉฐ, sys.path์์๋ ๋ชจ๋์ ๋ฐ๊ฒฌํ์ง ๋ชปํ๋ฉด ModuleNotFoundError ์๋ฌ๋ฅผ ๋ฆฌํดํ๋ค.
- sys.path ์ ์ ์๋์ด ์๋ ๋๋ ํฐ๋ฆฌ 3๊ฐ์ง
ํ์ด์ฌ ๋ชจ๋์ด ์คํ๋๊ณ ์๋ ํ์ฌ ๋๋ ํฐ๋ฆฌ
PYTHONPATH ํ๊ฒฝ๋ณ์์ ์ ์๋์ด ์๋ ๋๋ ํฐ๋ฆฌ
ํ์ด์ฌ๊ณผ ํจ๊ป ์ค์น๋ ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๐
พ๏ธ sys.modules ์ sys.path ์ ์ฐจ์ด์ ์?
path ๋ณ์๋ ๋ด๊ฐ ๋ง๋ ๋ชจ๋๊ณผ ํจํค์ง๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค
modules ๋ณ์๋ ์ํฌํธํ ๋ชจ๋์ด ์ฌ์ ํ์ฒ๋ผ ๋ค์ด์๋ค.
* ๐คทโโ๏ธ sys ๊ฐ ๋ญ์ง?
System-specific parameters and functions.
sys๋ ํ์ด์ฌ์์ ์ ๊ณตํ๋ ๋ชจ๋์ด๋ค.
์ด๋ค ์นํ์ด์ง๋ ํ์ผ์ด ๊ฐ์ง๊ณ ์๋ ๊ณ ์ ํ ๊ฒฝ๋ก๋ค.
์ต์์๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฒฝ๋ก๊ฐ ํ์๋๋ค.
C:\users\document\untitled.jpg
๐ ์ ๋๊ฒฝ๋ก๋ก ์ํฌํธํ๊ธฐ
from calculator.multiplication import func1
ํ์ฌ ์์
ํ๊ณ ์๋ ํ์ด์ง ๊ธฐ์ค์ ๊ฒฝ๋ก๋ฅผ ๋งํ๋ค
์ฆ ๋ด ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฒฝ๋ก๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค
๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ํ์ผ ์์น๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๊ฒฝ๋ก๋ ๋ณ๊ฒฝํด์ผํ๋ ๋จ์ ์ด ์๋ค.
๐ ์๋๊ฒฝ๋ก๋ก ์ํฌํธํ๊ธฐ
from .calculater22.sum_ import func2
# absoulte path
#from calculator.add_and_multiply import add_and_multiply
# relative path
from .calculator.add_and_multiply import add_and_multiply
if __name__ == '__main__':
print(add_and_multiply(1,2))
main ํ์ผ์์ ์คํํ๋ฉด ์ค๋ฅ๊ฐ ๋๋ค.
# absoulte path
from calculator.add_and_multiply import add_and_multiply
# relative path
#from .calculator.add_and_multiply import add_and_multiply
if __name__ == '__main__':
print(add_and_multiply(1,2))
> ์๋ ๊ฒฝ๋ก๊ฐ ์๋, ์ ๋๊ฒฝ๋ก์์ ์คํํ์
์๋๊ฒฝ๋ก๋ ์คํ ์คํฌ๋ฆฝํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฒฝ๋ก๋ฅผ ์ค์ ํ๋ ๋ฐฉ์์ด๋ค. ๊ทธ๋์ main module ์์ ์๋๊ฒฝ๋ก๋ฅผ ์ง์ ํ๋ฉด ํ์ฌ ์คํฌ๋ฆฝํธ ๋ช ์ด ๊ธฐ์ค์ด ์๋ "main" ์ด๋ผ๋ ๋ชจ๋๋ช ์ ๊ธฐ์ค์ผ๋ก ๊ฒฝ๋ก๋ฅผ ์ฐพ๋๋ค.
๊ทธ๋ฌ๋ ์ฌ์ฉ์๊ฐ ์ ์ํ ๋ชจ๋๋ช ์ "main"์ด ์๋๋ฏ๋ก ๊ฒฝ๋ก์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. main module ์์๋ ๋ฐ๋์ ์๋๊ฒฝ๋ก๊ฐ ์๋ ์ ๋๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋์ด๋ ํจํค์ง๋ฅผ import ํด์ผํ๋ค.
init.py ๋ ํจํค์ง์ ์ด๊ธฐ ์ค์ ์ ๋๋๋ค.
init.py ํ์ผ์ ํด๋น ๋๋ ํฐ๋ฆฌ๊ฐ ํจํค์ง์ ์ผ๋ถ์์ ์๋ ค์ฃผ๋ ์ญํ ์ ํ๋ค.
#multiplication.py
def multiply(a,b):
return(a*b)
def Squared(a,b):
return(a**b)
-----------------------------------------------
#__init__.py 'multiply'ํจ์๋ง ํ์
from .multiplication import multiply
__all__ = ["multiply"]
-----------------------------------------------
#main.py ์์ ์คํํ๋ฉด ์ค๋ฅ ๋จ
from calculator import *
print(multiply(1,2))
print(squered(1,2))
์ค๋ฅ : NameError: name 'squered' is not defined
๊ทธ๋ฌ๋ ์ง์ ์ ์ผ๋ก ํจ์๋ฅผ ์ํฌํธ ํ๋ ๊ฒฝ์ฐ (import Squared) ํ๋ ๊ฒฝ์ฐ์ ์คํ ๊ฐ๋ฅํ๋ค.