2026.07.15(水) / 21:53
FastAPI起動時に仮想環境のPythonが使われていなかった原因と解決策
- ID
- 40138
- Published
- 2026-07-15 21:53
- Modified
- 2026-07-15 22:01
- Author
- khiro
- Categories
- デフォルト
My Portfolioをローカル環境で起動するため、READMEに記載していた以下のコマンドを実行しました。
uvicorn app.main:app --reload
しかし、仮想環境を有効にしているつもりでも、開発サーバーを正常に起動できませんでした。
使用中のPythonを確認する
ターミナルの先頭には(venv)と表示されていたため、仮想環境は有効になっていると思っていました。
しかし、以下のコマンドで使用中のPythonを確認すると、プロジェクト内の仮想環境ではなく、pyenvのshimが表示されました。
which python
実行結果は以下のとおりです。
/Users/hiroki/.pyenv/shims/python
仮想環境が正しく有効になっている場合は、通常、プロジェクト内のPythonが表示されます。
/Users/ユーザー名/.../my-portfolio/.venv/bin/python
原因はFinderでフォルダ構成を変更したことだった
今回の原因は、Finderでフォルダを整理し、My Portfolioのプロジェクトを別の場所へ移動したことでした。
Pythonの仮想環境には、作成時のプロジェクトやPythonのパスに依存するファイルが含まれています。
そのため、仮想環境を作成した後にプロジェクトの保存場所を変更すると、移動前のパスを参照したままになり、仮想環境が正常に機能しなくなることがあります。
今回は、ターミナル上に(venv)と表示されていたものの、実際にはプロジェクト内のPythonへ切り替わっていませんでした。
仮想環境を作り直す
移動前に作成した仮想環境をそのまま使用せず、現在のプロジェクトディレクトリで作り直します。
最初に、現在の仮想環境を終了します。
deactivate
続いて、既存の仮想環境を削除します。
rm -rf .venv
現在のプロジェクトディレクトリ内で、仮想環境を新しく作成します。
python3 -m venv .venv
作成した仮想環境を有効にします。
source .venv/bin/activate
実際に使用されているPythonを確認する
仮想環境を有効にした後、実際に使用されているPythonを確認します。
python -c "import sys; print(sys.executable)"
次のように、現在のプロジェクト内にある.venv/bin/pythonが表示されれば、仮想環境が正しく有効になっています。
/Users/ユーザー名/.../my-portfolio/.venv/bin/python
which pythonでも確認できますが、実際にPythonが使用している実行ファイルを確認するには、sys.executableを表示する方法が分かりやすいです。
必要なライブラリを再インストールする
新しく作成した仮想環境にはライブラリが入っていないため、requirements.txtから再インストールします。
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
FastAPIを起動する
ライブラリのインストール後、以下のコマンドで開発サーバーを起動します。
python -m uvicorn app.main:app --reload
uvicorn app.main:app --reloadと直接実行するのではなく、python -m uvicornとすることで、現在使用しているPython環境からUvicornを起動できます。
READMEも修正した
今回の問題を踏まえて、READMEのローカル環境の起動手順も修正しました。
仮想環境を有効にするだけでなく、実際に使用されているPythonの場所を確認する手順を追加しました。
python -c "import sys; print(sys.executable)"
また、Uvicornの起動コマンドも、使用するPython環境を明確にするため、以下の形式へ変更しました。
python -m uvicorn app.main:app --reload
https://github.com/ki-hi-ro/my-portfolio
まとめ
今回の原因は、Finderでフォルダを整理した際にプロジェクトの保存場所が変わり、移動前に作成した仮想環境が正常に機能しなくなったことでした。
ターミナルに(venv)と表示されているだけでは、仮想環境が正しく使われているとは限りません。
実際に使用されているPythonは、以下のコマンドで確認できます。
python -c "import sys; print(sys.executable)"
プロジェクトのフォルダを移動した場合は、既存の仮想環境を引き継がず、移動先で作り直すのが安全です。
今回の対応を、My Portfolioの保守と開発環境改善の記録として残しておきます。