Relative import

2025. 1. 12. 18:33Programming Language/Python

유튜브를 보다 파이썬 문법을 설명하는 채널에서 좀 잘못된 설명을 하는 것 같아 한 번 직접 설명해보려 합니다.

https://www.youtube.com/watch?v=ZR-sYOdPSx8

 

솔직히 좀 실망했습니다...

관련 분야 석사도 하시고 파이썬 관련 책까지 쓰신 분이던데 잘못된 내용을 강의로 하시길래...

(정확히 말하자면 틀린 내용은 아니지만 불필요한 제약조건을 거시는...)

 

잡소리는 그만하고 설명하겠습니다.

 

-----------------------------------------------------------------------------

 

relative import는

from A import B 에서 A 부분에 .을 이용해 현재 파일(__file__) 위치를 기반으로 import하는 문법입니다.

 

.은 현재 파일이 위치한 디렉토리를 의미하고 ..은 현재 파일이 위치한 디렉토리의 부모 디렉토리를 의미합니다. 이처럼 .이 추가될 때마다 한단계 위 디렉토리를 의미합니다.

 

 

 

그리고 relative import는 패키지에서 사용할 것을 가정하고 만들어진 문법입니다.

그러므로 relative import가 정상적으로 동작하도록 하려면 현재 패키지 루트 디렉토리의 부모 디렉토리로 이동해서

python -m pkg.main

이런 식으로 -m 옵션과 함께 실행시켜주면 됩니다.

 

-----------------------------------------------------------------------------

이렇게 -m 옵션과 함께 실행시켜주면

위 영상에 나온 2, 3번 제약 조건은 없다고 생각하시면 됩니다.

 

단, 위 영상의 내용이 틀린 것은 아닌게

python main.py로 -m 옵션 없이 실행할 경우 import한 모듈들을 별도의 패키지로 인식해

relative import로 main.py가 위치한 디렉토리에 접근할 경우 top level을 넘었다는 에러가 뜨는 것입니다.

 

'Programming Language > Python' 카테고리의 다른 글

개행 문자가 포함된 json 읽기 - json.loads strict param  (0) 2025.04.17
datetime, zoneinfo 모듈의 호환성  (0) 2025.04.16
난수 생성 - numpy  (0) 2022.07.16
.py 배포  (0) 2022.07.14
Miniconda 소개  (0) 2021.12.22