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の保守と開発環境改善の記録として残しておきます。