Back to Blog

Flaskが起動できない?Address already in use Port 5000 is in use by another program.というエラーの対処方法

flask

2024年7月2日

こんにちは!

Flaskを起動すると以下のエラーが発生しました。

* Serving Flask app 'app'
* Debug mode: on
Address already in use
Port 5000 is in use by another program. Either identify and stop that program, or start the server with a different port.
On macOS, try disabling the 'AirPlay Receiver' service from System Preferences -> General -> AirDrop & Handoff.

これは、すでに5000番ポートを使用している場合に発生するエラーです。

このエラーの対処方法について詳しく解説します。

エラーメッセージの意味とは?

今回のエラーにはどのような意味があるのでしょうか?まずはエラー文章の意味について解説します。

「Address already in use Port 5000 is in use by another program.」というエラーメッセージは、Flaskアプリケーションを起動しようとした際に、指定されたポート(通常は5000番)が既に他のプログラムによって使用されていることを示しています。

このエラーが発生すると、Flaskサーバーは起動できず、アプリケーションをテストすることができません。

エラーの原因と対処方法は?

次にエラーの原因と解決方法について解説します。

エラーの原因とは?

エラーの原因には、以下のようなものが考えられます。

  • 同じポート番号を使用している他のプログラムが既に起動している。
  • 前回のFlaskサーバーが正しく終了しておらず、ポートが解放されていない。
  • 他のWebサーバーやデーモンプロセスが同じポートを使用している。

エラーの対処方法1:使用中のポートを解放する

今回のエラーは、5000番ポートを他のアプリが使用しているために発生するエラーです。

そのため、使用しているポートを解放すれば使えるようになります。

ターミナルを開き、以下のコマンドを実行してポートを使用しているプロセスのPIDを特定します。

lsof -i :5000
使用中ポートの確認

出力されたPIDを使用して、プロセスを終了します。

kill -9 414

#書式
#kill -9 [PID]

エラーの対処方法2:別のポートを使用する

次の対処方法は、別のポートを使用する方法です。

ポート競合を避けるために、Flaskアプリケーションを別のポートで起動することも有効です。

Flaskのデフォルトポートは5000番ですが、これを変更することで問題を回避できます。

Flaskを異なるポートで起動するには、app.run() メソッドの引数にポート番号を指定します。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(port=5001)

または、コマンドラインからポートを指定することもできます。

flask run --port=5001

エラーの対処方法3:PCを再起動する

上記の方法でポートを解放できない場合、システム全体を再起動することでポートが解放されることがあります。

再起動後に再度Flaskアプリケーションを起動してみてください。

まとめ

今回の記事では、「Address already in use: Port 5000 is in use by another program.」というエラーの対処方法について解説しました。

今回紹介した対処方法はこちらです。

  • 使用中のポートを解放する
  • 別のポートを使用する
  • PCを再起動する

Flaskのエラーで困っている方の助けになれば幸いです。

             

Pythonの基礎から応用まで学べる
Python WebAcademy

Python WebAcademyでは、Pythonの基礎からアーキテクチャなどの応用的な内容まで幅広く学べます。また、ブラウザ上で直接Pythonコードを試すことができ、実践的なスキルを身につけることが可能です。

             Pythonの学習を始める