[python] Flask 앱을 ​​디버깅하는 방법

Flask의 오류를 어떻게 디버깅 하시겠습니까? 콘솔로 인쇄 하시겠습니까? 페이지에 플래시 메시지가 있습니까? 아니면 무언가 잘못되었을 때 무슨 일이 일어나고 있는지 알아낼 수있는 더 강력한 옵션이 있습니까?



답변

개발 모드에서 앱을 실행하면 오류가있을 때 브라우저에 대화 형 추적 및 콘솔이 표시됩니다. 개발 모드에서 실행하려면 FLASK_ENV=development환경 변수를 설정 한 다음 flask run명령 을 사용하십시오 ( FLASK_APP앱도 가리켜 야 함).

Linux, Mac, Windows 용 Linux 하위 시스템, Windows의 Git Bash 등 :

export FLASK_APP=myapp
export FLASK_ENV=development
flask run

Windows CMD set의 경우 내보내기 대신 사용하십시오 .

set FLASK_ENV=development

PowerShell의 경우 다음을 사용하십시오 $env.

$env:FLASK_ENV = "development"

Flask 1.0 이전에는 FLASK_DEBUG=1환경 변수 로 제어되었습니다 .

명령 app.run()대신 메소드를 사용하는 경우 디버그 모드를 사용하도록 flask run전달 debug=True하십시오.

개발 모드와 상관없이 서버를 실행하는 터미널에 역 추적도 인쇄됩니다.

PyCharm, VS Code 등을 사용하는 경우 디버거를 활용하여 중단 점으로 코드를 단계별로 실행할 수 있습니다. 실행 구성은을 호출하는 스크립트를 app.run(debug=True, use_reloader=False)가리 키거나 스크립트를 가리키고 venv/bin/flask명령 줄에서와 같이 사용할 수 있습니다. 리 로더를 비활성화 한 상태로 둘 수 있지만 다시로드하면 디버깅 컨텍스트가 종료되고 중단 점을 다시 잡아야합니다.

set_trace디버깅을 시작하려는 뷰 를 호출하여 pdb, pudb 또는 다른 터미널 디버거를 사용할 수도 있습니다 .


블록을 제외하고 너무 넓지 않게 사용하십시오. 모든 코드를 포괄으로 try... except...묶으면 디버깅하려는 오류가 사라집니다. Flask는 디버거 또는 500 오류를 표시하고 콘솔에 트레이스 백을 인쇄하여 이미 예외를 처리하므로 일반적으로 필요하지 않습니다.


답변

당신은 사용할 수 있습니다 app.run(debug=True)에 대한 WERKZEUG 디버거 편집 아래에 언급 한 바와 같이, 나는 알고 있어야합니다.


답변

로부터 1.1.x문서 , 당신은 당신의 쉘 프롬프트에 환경 변수를 내보내기하여 디버그 모드를 활성화 할 수 있습니다 :

export FLASK_APP=/daemon/api/views.py  # path to app
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0


답변

또한 Flask Debug Toolbar 확장을 사용하여 렌더링 된 페이지에 포함 된보다 자세한 정보를 얻을 수 있습니다.

from flask import Flask
from flask_debugtoolbar import DebugToolbarExtension
import logging

app = Flask(__name__)
app.debug = True
app.secret_key = 'development key'

toolbar = DebugToolbarExtension(app)

@app.route('/')
def index():
    logging.warning("See this message in Flask Debug Toolbar!")
    return "<html><body></body></html>"

다음과 같이 응용 프로그램을 시작하십시오.

FLASK_APP=main.py FLASK_DEBUG=1 flask run


답변

Visual Studio Code를 사용하는 경우 교체

app.run(debug=True)

app.run()

내부 디버거를 켜면 VS 코드 디버거가 비활성화됩니다.


답변

플라스크 앱을 디버깅하려면 플라스크 앱이있는 폴더로 이동하십시오. 가상 환경을 활성화하고 콘솔의 “mainfilename”변경 사항을 플라스크 기본 파일로 붙여 넣는 것을 잊지 마십시오.

export FLASK_APP="mainfilename.py"
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0

플라스크 앱에 디버거를 활성화하면 거의 모든 오류가 콘솔 또는 브라우저 창에 인쇄됩니다. 무슨 일이 일어나고 있는지 알아 내려면 간단한 print 문을 사용하거나 javascript 코드에 console.log ()를 사용할 수도 있습니다.


답변

python-dotenv가상 환경에 설치 하십시오.

프로젝트 루트에 .flaskenv를 만듭니다. 프로젝트 루트는 app.py 파일이있는 폴더를 의미합니다.

이 파일 안에 다음을 작성하십시오.

FLASK_APP=myapp
FLASK_ENV=development

이제 다음 명령을 발행하십시오.

flask run