簡體   English   中英

如何調試 Flask 應用程序

[英]How to debug a Flask app

你打算如何調試 Flask 中的錯誤? 打印到控制台? Flash 消息到頁面? 或者是否有更強大的選項可用於找出出現問題時發生的情況?

在開發模式下運行應用程序將在出現錯誤時在瀏覽器中顯示交互式回溯和控制台。 要在開發模式下運行,請設置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而不是 export:

set FLASK_ENV=development

對於 PowerShell,使用$env

$env:FLASK_ENV = "development"

在 Flask 1.0 之前,這由FLASK_DEBUG=1環境變量控制。

如果您使用app.run()方法而不是flask run命令,請傳遞debug=True以啟用調試模式。

Tracebacks 也會打印到運行服務器的終端,無論開發模式如何。

如果您使用的是 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文檔中,您可以通過將環境變量導出到 shell 提示符來啟用調試模式:

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

還可以使用Flask 調試工具欄擴展來獲取嵌入在渲染頁面中的更多詳細信息。

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 Code 調試器時出現。

如果你想調試你的燒瓶應用程序,那么只需轉到燒瓶應用程序所在的文件夾。 不要忘記激活您的虛擬環境並將控制台中的行粘貼將“mainfilename”更改為flask主文件。

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

在為燒瓶應用程序啟用調試器后,幾乎每個錯誤都將打印在控制台或瀏覽器窗口上。 如果您想弄清楚發生了什么,您可以使用簡單的打印語句,也可以使用 console.log() 處理 JavaScript 代碼。

要在燒瓶中激活調試模式,您只需在 Windows 的CMD上鍵入set FLASK_DEBUG=1 ,或在 Linux 終端上export FLASK_DEBUG=1 ,然后重新啟動您的應用程序,一切順利!

在您的虛擬環境中安裝python-dotenv

在項目根目錄中創建一個 .flaskenv。 項目根目錄是指包含您的 app.py 文件的文件夾

在此文件中寫入以下內容:

FLASK_APP=myapp 
FLASK_ENV=development

現在發出以下命令:

flask run

對於 Windows 用戶:

打開 Powershell 並 cd 進入您的項目目錄。

在 Powershell 中使用這些突擊隊,所有其他東西在 Powershell 中都不起作用。

$env:FLASK_APP = "app"  
$env:FLASK_ENV = "development"

強制調試模式的快速破解:如果您真的想打開調試器模式。 有一個對我有用的快速破解方法。
首先在app.py中添加以下代碼

# app.py
if __name__ == "__main__":
    app.run(debug=True)

現在,不要使用flask run ,而是嘗試python3 app.py runserver -d

# Terminal
python3 app.py runserver -d 

這將強制以調試模式運行服務器。

快速提示 - 如果您使用 PyCharm,請轉到Edit Configurations => Configurations並啟用FLASK_DEBUG復選框,重新啟動Run

使用虛擬環境激活

export FLASK_DEBUG=true

你可以配置

export FLASK_APP=app.py  # run.py
export FLASK_ENV = "development"

開始

flask run

結果

 * Environment: development
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: xxx-xxx-xxx

如果你改變

export FLASK_DEBUG=false

 * Environment: development
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

在開發環境中使用記錄器和打印語句,您可以在生產環境中進行哨兵。

Flask 是 Web 應用程序框架。 Flask 是用 Python 語言編寫的。 通過使用這個框架,我們可以開發網站。 它也被稱為微框架。 它沒有用於數據庫處理的內置抽象層。 它支持將此類功能添加到應用程序的擴展。

Flask 框架使用路由技術來幫助用戶記住應用程序的 Url。 通過使用路由器,我們可以直接訪問所需的頁面而無需導航。 我們還可以通過添加一些可變部分來動態構建 Url。 在 Web 應用程序中,我們為每個操作使用唯一的 Url。

當 run() 方法調用時,我們的 Flask 應用程序將啟動。

if __name__=="__main__":
    app.run()

如果您像我一樣使用 pycharm 並使用“運行”按鈕,您只需修改 pycharm 本身內部的一些設置。 IDE 所做的是使用您的選項運行一個命令,只是包裝得很好。

右上角 > 編輯配置... > 選中“FLASK_DEBUG”旁邊的框。

此選項無需更改代碼即可啟用 werkzeug 調試器(適用於需要部署的應用程序)。 見這里: https<\/a> :\/\/flask.palletsprojects.com\/en\/2.0.x\/debugging\/

完美運行。

我也認為哨兵也是一個很好的調試選擇。 它是免費的(在開發者計划中)。 以易於理解且非常漂亮的形式顯示有關錯誤的信息。 為燒瓶設置哨兵並不難

在此處查看更多信息: https ://sentry.io/for/flask/

[對於 WINDOWS] 按照以下步驟將 flask 調試模式設置為 1:

set FLASK_DEBUG=1 
$env:FLASK_DEBUG = "1"
flask run

執行 flask 運行后,在 CMD 中,您會看到調試模式設置為開啟。

  • 調試模式:開
  • http://127.0.0.1:5000上運行(按 CTRL+C 退出)
  • 用 stat 重啟
  • 調試器處於活動狀態
  • 調試器 PIN:143-941-104

您可以使用pip install python-dotenv然后創建一個.flask_env.env文件文件的內容可以是:

FLASK_APP=myapp
FLASK_DEBUG=True

要調試 Flask 應用程序,您需要使用:

server.run(
    debug=True
)

如果您在本地運行它並希望能夠單步執行代碼:

python -m pdb script.py<\/code>

"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM