Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- flask
- flaks
- 프로그래머스
- 백준 2193
- git password
- 이베이 매각
- 딥러닝
- 110 옮기기
- 스무고개 Metric
- Convolutional Neural Networks
- 프로그래머스 여행경로
- cs231
- 알고리즘
- 경제 요약
- 웹 독학
- 코딩테스트
- C++
- 2003 error
- aws rds
- 2003 에러
- 뤼이드
- pytorch-tutorial
- but how?
- git-lfs
- 장영준
- 오픈소스
- 리멤버나우
- 미국 이란 전쟁
- 리멤버나우 요약
- multi-task learning
Archives
- Today
- Total
Nam's
Flask 디버깅 02 - Circular Import 본문
참고자료: medium.com/mathpresso/python-circular-imports-e89c5bf16510
models.py 에서 from .. import db 를 하고 싶은데 계속 "ImportError: cannot import name 'db' from 'app' Error가 발생했다.
처음에는 상위 폴더 모듈 import 하는 다른 방법이 있나 싶어서 계속 찾아봤는데, 한 2시간 정도 헤매다가 Circular Import 문제라는 것을 알게됐다.
app의 __init__.py와 models.py가 서로가 서로를 import하고 있었다.
Python 에서는 runtime과 import time이 구분되는데, 순환 참조 오류는 import time 에서 코드를 파싱할 때 발생한다.
순환 참조 오류를 해결하기 위해서는 import time 에서 function 본문과 class method 본문은 실행되지 않는다는 것을 알아야한다.
따라서 function이나 class method 안쪽에서 import하면 된다.
Flask에서 create_app() 안에서 app = Flask(__name__) 객체 선언을 권장하는 이유도 비슷한 이유에서다.
from . import models를 create_app()안으로 넣어주면 문제가 해결된다.
'개발 > Back-end' 카테고리의 다른 글
Flask Study 01 - host 설정 (0) | 2021.01.25 |
---|---|
Flask 디버깅 03 - Load_dotenv로 .env 가져오기 (0) | 2021.01.23 |
Flask 디버깅 01 - Flask-Restful return HTML (0) | 2021.01.22 |
Flask Study 00 - 덩어리들 (0) | 2021.01.19 |
Backend 공부 (0) | 2020.11.16 |
Comments