# デバッグ Visual Studio CodeやPyCharmなどを使用して、エディター上でデバッガーと連携できます。 ## `uvicorn` の実行 FastAPIアプリケーション上で、`uvicorn` を直接インポートして実行します: ```Python hl_lines="1 15" {!../../../docs_src/debugging/tutorial001.py!} ``` ### `__name__ == "__main__"` について `__name__ == "__main__"` の主な目的は、ファイルが次のコマンドで呼び出されたときに実行されるコードを用意することです:
```console $ python myapp.py ```
ただし、次のように、別のファイルからインポートされるときには呼び出されません: ```Python from myapp import app ``` #### より詳しい説明 ファイルの名前が `myapp.py` だとします。 以下の様に実行する場合:
```console $ python myapp.py ```
Pythonによって自動的に作成されたファイル内の内部変数 `__name__` は、値として文字列 `"__main__"` を持ちます。 なので、以下: ```Python uvicorn.run(app, host="0.0.0.0", port=8000) ``` は実行されます。 --- そのモジュール (ファイル) をインポートした場合は、こうはなりません。 したがって、次のようなもう一つのファイル `importer.py` がある場合: ```Python from myapp import app # Some more code ``` `myapp.py` 内の自動変数には、値が `"__main __"` の変数 `__name__` はありません。 したがって、以下の行: ```Python uvicorn.run(app, host="0.0.0.0", port=8000) ``` は実行されません。 !!! info "情報" より詳しい情報は、公式Pythonドキュメントを参照してください。 ## デバッガーでコードを実行 コードから直接Uvicornサーバーを実行しているため、デバッガーから直接Pythonプログラム (FastAPIアプリケーション) を呼び出せます。 --- 例えば、Visual Studio Codeでは、次のことが可能です: * 「デバッグ」パネルに移動。 * 「構成の追加...」 * 「Python」を選択。 * オプション「`Python: Current File (Integrated Terminal)`」を指定してデバッガーを実行。 すると、**FastAPI** コードでサーバーが起動され、ブレークポイントで停止したりするでしょう。 以下の様な画面になります: --- Pycharmを使用する場合、次のことが可能です: * 「実行」メニューをオープン。 * オプション「デバッグ...」を選択。 * 次にコンテキストメニューが表示される。 * デバッグするファイル (ここでは `main.py`) を選択。 すると、**FastAPI** コードでサーバーが起動され、ブレークポイントで停止したりするでしょう。 以下の様な画面になります: