【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 --reload
Error: No such option: -B
uvicorn
には-B
オプションが存在しないため、この方法は使用できませんでした。
まとめ
__pycache__
の生成を防ぐには、環境変数PYTHONDONTWRITEBYTECODE
を設定する方法が最も確実でした。他の方法も試してみましたが、完全には防げなかったり、エラーが発生したりしました。同じような悩みを持つ方は、ぜひこの方法を試してみてください。
コメント