Python

Python Circular import 에러

189bigman 2023. 2. 6. 10:49

ImportError: cannot import name 'test2' from partially initialized module 'test2' (most likely due to a circular import) (/Users/seojihun/Desktop/testtt/test2.py)

 

오늘 작업을 하던중 처음보는 에러를 만났다.

 

상황은  test1파일에서  test2 파일을 임포트하고 있고  test2 파일에서 test1 파일을 임포트할때 생겼다.

구글링을 통해 알아봤는데 좋은 블로그 글을 발견했다. 참고 하겠다.

https://blog.mathpresso.com/python-circular-imports-e89c5bf16510

 

Python Circular Imports

Python Circular Imports가 무엇이며, 오류는 어떻게 해결할까?

blog.mathpresso.com

내용을 보면 Python 은 import time과 runtime이 구분되어 실행된다고 한다.

먼저 runtime은 실제로 모든 코드가 실행되는 순간

import time은 맨 위부터 코드를 파싱, 실행을 위한 바이트 코드로 생성한다.

결과고 .pyc 파일이 생성되고, Syntax Error 도 코드를 파싱하는 과정에서 일어난다고 한다.

함수 본문과 클래스의 메소드 본문을 제외한 대부분의 코드를 import time에 실행한다.

 

import time에 test1.py 를 실행하다 import 실행으로 test2.py 실행  test2.py import 실행 test1.py 반복으로

Circular import 에러가 발생한다.

 

해결방법은 

import time에 import가 아니라 runtime에 임포트를 하는것이다.

예를 들자면 이런식으로 해결은 했지만 이런식의 해결이 아닌 구조를 바꾸는 방법을 사용하거나 해야할거 같다.