본문 바로가기
ETC/FLASK

FLASK 에러들

by 율✌️ 2022. 5. 20.



Flask 실행시 메시지가(Serving Flask app "app" (lazy loading) ) 라고뜸

  • 아래 메세지는 서버가 동작하고 있다는 것과 서버의 상태를 알려주는 기본 메시지. 이런 것을 서버의 기록이라고 해서 서버 로그 server log 라고 부르기도 함.
  • 에러 상태가 아니라 Flask 의 동작상태를 알려주는 것이니 별 다른 부분을 수정하지 않았다면 Flask 를 실행할 때마다 뜬다고 생각하면 됨.
* Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://0.0.0.0:5000/ 또는 숫자로 된 주소 (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 고유한 핀번호

Flask 실행에서 index.html 파일이 제대로 뜨지 않음

(jinja2.exceptions.TemplateNotFound에러 포함)

1. chrome 을 새로고침

2. jinja2.exceptions.TemplateNotFound 에러라면: 정해진 위치에 index.html 이 없다는 오류

  • flask 는 templates 폴더 안에 index.html 파일이 있어야 정상적으로 동작함
  • 체크리스트:
    • [ ] 폴더명이 templates 인지 오탈자 확인 (특히 맨 뒤 s가 빠지지 않았는지 확인)
    • [ ] templates 안에 index.html 이 들어있는지 확인 (파일명 index.html)
    • [ ] python 파일명이 app.py 인지 확인
    • [ ] 아래와 같은 파일 구조인지 확인, app.py 는 venv 폴더 밖에 위치해야함

   


(윈도우즈) 플라스크 시작하기에서 에러남

(UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb9 in position 0: invalid start byte)

 

  1. (윈도우즈) 경로에 한글이 있으면 에러가 날 때가 있음. 윈도우즈 사용자 이름을 영어로, 아래 블로그 참고
    설정을 바꾼 후 컴퓨터 리부팅

  2. 윈도우즈 사용자명을 바꾼 후에도 에러 메시지의 경로에 한글 사용자명이 그대로 보인다면

      새로운 윈도우즈 사용자를 영어로 추가(사용자명에 관리자 권한 주기 포함).

      새로 만든 사용자를 개발할 때 사용하는 계정으로 쓰면됨


실행시 Error: [Errno 48] Address already in use 라는 메시지가 뜸

  • 해당 port 번호를 다른 프로세스(어떤 프로그램)이 이미 사용하고 있기때문.
    주차장 한 칸에 하나의 자동차만 있어야 하는 것처럼!!
  • app.py 에 아래처럼 기본값으로 적혀있다면, 5000 포트를 사용하고 있다는 뜻이므로
    기존에 5000 포트를 사용하고 있는 프로세스를 종료시키고 내 서비스를 5000포트에 띄워줘야함
    port=5000 => 5000 포트를 사용
if __name__ == '__main__':
    app.run('0.0.0.0', port=5000, debug=True)

            ▶ 방법1.  기존에 사용되고 있던 프로세스를 종료시키기 - pycharm 에서
                           Pycharm 하단 run 화면 창에서 빨간색으로 서버 실행되고 있다는 메시지(로그)가 뜨고 있다면

                           좌측에 있는 stop 버튼을 클릭. 만약 pycharm 이 갑자기 종료되어서 이 방법을 사용할 수 없다면 방법 2!

            ▶ 방법2.  기존에 사용되고 있던 프로세스를 종료시키기 - 터미널에서

                            (Mac). 특정 포트 (flask의 5000)을 사용하는 프로세스 종료할 때 사용하는 방법

                            https://thswave.github.io/mac/2015/05/10/mac-port-kill.html

lsof -n -i4TCP:5000 | grep LISTEN

                           이 명령어로 출력되는 두번째 값(네 자리 숫자)인 process_id(pid) 를 넣어서 프로세스를 종료

kill -9 pid값

Flask 에서 css, html, Js 파일을 분리했는데 화면이 잘 보이지 않는경우 (화면보기로 띄웠을 때는 제대로 띄워지는데 app.py 를 통해서 실행시켰을 때 오류 나는 경우)

Flask서버에서 html, css, js를 잘 가져와지도록 설정.

깨지는 부분은 아마 css나 js를 flask서버 static 폴더에 넣어두지 않아서 그럴 가능성이 높음

아래 링크를 참고

https://exchangeinfo.tistory.com/65


Flask 실행 시 (IndentationError: expected an indented block) 에러가 뜨면서 실행되지 않음

해당 오류는 코드에서 들여쓰기 할 때 탭과 스페이스를 섞어서 사용하게 되면 발생

tab 키로 한 띄어쓰기와 스페이스바를 이용한 띄어쓰기는 우리 눈에는 똑같아 보이지만 실제로 컴퓨터가 해석하는 방식이 다르기때문!

빨간색으로 된 오류출력 코드 끝에 File “~~\\app.py”, line 13 ^ 으로 표시된 곳을 보면 app.py 파일의 13번째 줄의 코드에서 오류가 발생했다 것을 알 수 있음

👉 오류가 발생한 줄의 코드를 지웠다가 들여쓰기 시에는 탭으로 작성해주기!

 


(mac) Flask 실행 후Error: [Errno 48] Address already in use 라는 메시지로 프로세스 종료 및 kill 명령어로 종료해도 동일한 현상이 나타남

021년 10월 25일부터 macOS 몬테레이로 업그레이드+릴리즈 되면서 포트 5000번을 쓰게됨

  1. 단순한 해결방법: 포트번호 5000번 말고 다른 번호로 변경
  2. airplay를 끄기 https://medium.com/pythonistas/port-5000-already-in-use-macos-monterey-issue-d86b02edd36c

 

'ETC > FLASK' 카테고리의 다른 글

Flask_API GET/POST 요청 / 요청확인 코드  (0) 2022.05.20