【FastAPI】uvicornコマンドでのpycache 生成させない方法

FastAPIで開発していると、__pycache__フォルダが自動的に生成されることがあります。これはPythonがソースコードをバイトコードにコンパイルして保存するための仕組みですが、開発中や特定の環境ではこれを避けたい場合があります。
目次
環境変数を使って__pycache__の生成を防ぐ
最も効果的だった方法は、環境変数PYTHONDONTWRITEBYTECODEを設定することでした。
export PYTHONDONTWRITEBYTECODE=1
uvicorn app.main:app --reloadこの設定を行うことで、Pythonはバイトコードファイル(.pyc)を生成しなくなり、__pycache__フォルダも作成されませんでした。この方法は、シェルやOSレベルで環境変数を設定する場合に有効です。
他の方法を試してみたが…
コード内での設定
sys.dont_write_bytecode = Trueをコードの先頭に書く方法も試しました。
import sys
sys.dont_write_bytecode = Trueしかし、この方法では既にインポートされているモジュールによって__pycache__が生成されてしまい、完全には防げませんでした。(もしかしたら、方法によってもこれでもいけるかも?)
uvicornの-Bオプション
uvicornを実行する際に-Bオプションを付けてみましたが、以下のようなエラーが出てしまいました。
uvicorn -B app.main:app --reloadError: No such option: -Buvicornには-Bオプションが存在しないため、この方法は使用できませんでした。
まとめ
__pycache__の生成を防ぐには、環境変数PYTHONDONTWRITEBYTECODEを設定する方法が最も確実でした。他の方法も試してみましたが、完全には防げなかったり、エラーが発生したりしました。同じような悩みを持つ方は、ぜひこの方法を試してみてください。

コメント