Skip to content

偵錯

🌐 AI 與人類共同完成的翻譯

此翻譯由人類指導的 AI 完成。🤝

可能會有對原意的誤解,或讀起來不自然等問題。🤖

你可以透過協助我們更好地引導 AI LLM來改進此翻譯。

英文版

你可以在編輯器中連接偵錯器,例如 Visual Studio Code 或 PyCharm。

呼叫 uvicorn

在你的 FastAPI 應用程式中,直接匯入並執行 uvicorn

import uvicorn
from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def root():
    a = "a"
    b = "b" + a
    return {"hello world": b}


if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

關於 __name__ == "__main__"

__name__ == "__main__" 的主要目的是,當你的檔案以以下方式呼叫時,執行某些程式碼:

$ python myapp.py

但當其他檔案匯入它時不會執行,例如:

from myapp import app

更多細節

假設你的檔名是 myapp.py

如果你用以下方式執行它:

$ python myapp.py

那麼在你的檔案中,由 Python 自動建立的內部變數 __name__,其值會是字串 "__main__"

因此,這段:

    uvicorn.run(app, host="0.0.0.0", port=8000)

會被執行。


如果你是匯入該模組(檔案),就不會發生這件事。

所以,如果你有另一個檔案 importer.py,內容如下:

from myapp import app

# Some more code

在那種情況下,myapp.py 中自動建立的變數 __name__ 就不會是 "__main__"

因此,這一行:

    uvicorn.run(app, host="0.0.0.0", port=8000)

就不會被執行。

說明

想了解更多,參考 Python 官方文件

用偵錯器執行你的程式碼

因為你是直接從程式碼中執行 Uvicorn 伺服器,所以你可以直接從偵錯器呼叫你的 Python 程式(你的 FastAPI 應用程式)。


例如,在 Visual Studio Code 中,你可以:

  • 前往 "Debug" 面板
  • 點選 "Add configuration..."
  • 選擇 "Python"
  • 使用選項 "Python: Current File (Integrated Terminal)" 啟動偵錯器

接著它會用你的 FastAPI 程式碼啟動伺服器、在你的中斷點停下等。

可能會長這樣:


如果你使用 PyCharm,你可以:

  • 開啟 "Run" 選單
  • 選擇 "Debug..."
  • 會出現一個情境選單
  • 選擇要偵錯的檔案(此例為 main.py

接著它會用你的 FastAPI 程式碼啟動伺服器、在你的中斷點停下等。

可能會長這樣: