\ ポイント最大47倍! /

【完全保存版】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 が起動できません。

4つの対処法

方法1:ポート8000を使っているプロセスを探して kill

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

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

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

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

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

方法2:runserver プロセスを直接探して kill

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

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

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

方法3:ポート8000を使用中のプロセスを一括 kill(強制版)

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

Bash
lsof -ti:8000 | xargs kill -9

方法4:起動中の runserver ターミナルがある場合は Ctrl+C

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

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

Bash
Ctrl + C

まとめ

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

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

この記事が気に入ったら
フォローしてね!

シェア・記事の保存はこちら!

この記事を書いた人

CFXLOGのアバター CFXLOG プログラマ

メイン言語はPython。本ブログでは、実務や普段の学習で学んだことをアウトプットしています。
基本情報技術者試験合格者。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)