How import statement finds modules and packages

박준영·2021년 5월 18일
0

예시 구조의 패키지가 있습니다.

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는 알 수가 없기 때문에 에러가 발생합니다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN