예시 구조의 패키지가 있습니다.
main.py에서 상대경로로 add_and_mutiply 를 임포트 했을 때 에러가 발생합니다.
ImportError: attempted relative import with no known parent package
메인 모듈에서 패키지 모듈을 임포트 해주기 위해서는
# absoulte pach
# 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.py
에서 add_and_multiply.py
를 import 해주기 위해서는 절대경로
를 써야합니다.
main 모듈에서 상대경로를 사용할경우 파이썬이 상대경로의 출발점, 즉 main 모듈의 위치를 찾지 못하기 때문이라고 합니다.
add_and_multiply.py
에서 multiplication.py
를 import 해주기 위해서는 상대경로
를 해주어야합니다.
add_and_multiply.py
에서 multiply
를 상대경로를 이용하면 에러가 발생하기 때문에 절대경로를 이용해야합니다.
init
터미널에서 직접 python 파일을 실행시킬 때 name == 'main' 이 됩니다. 그러면 당연히 main이라는 모듈의 위치를 파이썬 interpreter는 알 수가 없기 때문에 에러가 발생합니다.