【完全保存版】Djangoで「That port is already in use」エラーが出たときの対処法まとめ

Django 開発中に python manage.py runserver を実行したら、次のようなエラーに遭遇しましたか?

Bash
Error: That port is already in use.

これは ポート(例:8000番)を別のプロセスが使っている ために起きるエラーです。

原因を特定できれば簡単に解決できますが、初心者のうちは「何を止めればいいの?」となりがち。

この記事では、同じ状況で迷った人向けに 一番シンプルで確実な解決方法 をまとめました。

Django の開発サーバーは通常 8000 番ポートを使用します。

ところが、次のような理由でポートが塞がっている場合があります。

  • 前回の runserver がバックグラウンドに残っている
  • VSCode やターミナルを閉じたがプロセスは生きている
  • 別アプリが同じポートを使用している

これではDjango が起動できません。

次の手順で、すでに動いているプロセスをkillします

Bash
# ポート8000を使用しているプロセスIDを取得
kill $(lsof -ti:8000)

# 取得したプロセスIDを使って、犯人を探す(PDID=12345の場合)
ps -p 12345 -f

# 強制終了モード (-9) で kill する
kill -9 $(lsof -ti:8000)

これが最も汎用的で、9割は解決します。

もし runserver が残っているだけならこちら。

Bash
# runserver のプロセスIDを取得
ps aux | grep runserver

# 表示されたプロセスIDを kill
kill <プロセスID>

ちょっと強引ですが、確実に止まります。

Bash
lsof -ti:8000 | xargs kill -9

単純ですが、意外と忘れがちな基本の手順です。

ターミナル上で Django が動いている場合は、次のキーで安全に止まります。

Bash
Ctrl + C

最後に、本記事の内容をまとめます。

方法目的
方法1まず最初に試す。8000番ポートを使うプロセスを kill
方法2runserver が残っているか調べたい時
方法3プロセスをまとめて強制停止したい時
方法4そもそもターミナルで動作中の runserver を止める時
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

普段は主にPython開発をしています。
最近はAI駆動開発にも関わっています。

コメント

コメントする