Assignment
이번 과제는 코딩 과제가 아니라 서술형 과제입니다. 다음 문제들을 읽으시고 답을 블로깅 한후 슬랙 채널에 공유해주세요.
*sys.modules
-파이썬이나 모듈이나 package를 찾기 위해 가장 먼저 확인하는 곳 입니다.
-단순한 dictionary
-이미 import된 모듈과 packages들을 저장하고 있습니다.
sys.path
-마지막으로 보는 장소
-기본적으로 list 이며 string 요소들을 가지고 있습니다
-파이썬은 list의 각 경로를 하나 하나 확인하면서 해당 경로에 import 하고자 하는 package가 위치해 있는지 확인합니다.
sys 는 이미 파이썬에 포함되어 있는 모듈이므로 sys모듈을 import해서 sys.modules와 sys.path를 출력할수도 있고 수정 할 수도 있습니다.
예를 들면 파이썬은 import 하고 하는 모듈과 package를 찾을 때 먼저 sys.modulues를 보고,없으면 파이썬 built-in을 확인하고 마지막으로 sys.path를 확인합니다. 이때 sys.path에서도 찾이 못하면 ModuleNotFoundError에러를 리턴합니다.
Absolute path는 절대 경로 입니다. import를 하는 파일이나 경로에 상관 없이 항상 경로가 동일하기 때문입니다.
Relative path는 absolute path와 다르게 프로젝트의 최상단 디렉토리를 기준으로 경로를 잡는게 아니라 import하는 위치를 기준으로 경로를 정의합니다. 그래서 일반적으로 relative path는 local package안에서 다른 local package를 import 할 때 사용됩니다.
main.py
#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))
add_and_multiply.py
from .multiplication import multiply
def add_and_multiply(a,b):
return multiply(a,b) + (a+b)
multiplication.py
def multiply(a,b):
return(a*b)
상대경로로 import 할 때, main.py에서 발생한 것과 같은 에러가 뜹니다. 마찬가지로 main module인 add_and_multiply 모듈의 위치를 잡지 못해 발생하는 에러입니다.
int.py 는 파일이 존재하는 디렉터리는 패키지의 일부임을 알려주는 역할을 합니다. 따라서 int.py라는 파일이 없는 디렉터리는 패캐지로 인식되지 않는다.