현상
다른 앱의 함수를 임포트하니 발생한 에러.
원인
- Python은 프로그램 실행시 import time과 runtime이 구분되어 실행된다.
- rumtime의 경우 실제로 모든 코드가 실행되는 순간이다.
- 그에 반해 import time에는 .py 모듈에 들어 있는 소스 코드를 위에서 부터 순서대로 한 번 파싱하고, 실행을 위한 바이트 코드를 생성한다.
- import time의 결과물로 .pyc 파일이 생성되며, Syntax Error 도 코드를 파싱하는 과정에서 일어난다.
- 또한 함수 본문과 클래스의 메소드 본문을 제외한 대부분의 코드를 import time에 실행합니다. (최신 .pyc 파일이 존재할 경우 이 과정이 생략됩니다)
- 즉, import time에는 함수 본문과 클래스 메소드 본문을 제외한 코드들을 실행하는데 이 부분이 a.py 실행시 문제가 되어 순환 참조 에러가 발생합니다. a.py의 경우 function_a() 코드가 import time에 실행되기 때문에 a 모듈과 b 모듈이 반복적으로 import 되기 때문입니다.
https://blog.mathpresso.com/python-circular-imports-e89c5bf16510