답변:
개발 모드에서 앱을 실행하면 오류가있을 때 브라우저에 대화 형 추적 및 콘솔이 표시됩니다. 개발 모드에서 실행하려면 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 디버거 편집 아래에 언급 한 바와 같이, 나는 알고 있어야합니다.
debug=True
실제로 Werkzeug 디버거를 사용하고 있기 때문에 어느 쪽도 아니거나 ;-)가 아닙니다.
print 'xyz'
하면 콘솔에 인쇄됩니다. 브라우저에서 디버깅하려면 디버깅하려는 위치에 오류를 강제로 적용해야합니다. raise Exception('xyz')
. 브라우저 창에 디버그가 출력됩니다.
로부터 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
빠른 팁-PyCharm을 사용하는 경우 Edit Configurations
=> 로 이동하여 확인란을 Configurations
활성화 FLASK_DEBUG
하고를 다시 시작하십시오 Run
.
개발 환경에서 로거 및 인쇄 문을 사용하면 프로덕션 환경의 경우 보초로 갈 수 있습니다.
app.run()
(디버그를 켜거나 끄는) 마술은 없습니다 . Flask는 다른 Python 응용 프로그램과 같이 작동하므로 Python 응용 프로그램을 디버깅하는 것과 같은 방식으로 디버깅 할 수 있습니다. 로깅을 사용하려면 로깅을 사용하십시오. 인쇄하려면 인쇄를 사용하십시오. 원하는 경우 디버거를 사용할 수도 있습니다.