MacでFlaskをrunすると「Address already in use」が出るときは

Mac,プログラムFlask,python

たとえば

from flask import Flask

app = Flask(__name__)

if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)

 

上記のようなコードで実行すると、
「Address already in use」のエラーが出て実行できない。

検索してみると、
lsof -i:ポートNoでプロセスを特定して、killしましょう
という情報がたくさん出てきたのでkillしてみるが、
killしても勝手にポート5000のプロセスが上がってくる。

スポンサーリンク

対処方法

AirPlayレシーバーをオフにする

システム環境設定 〜 共有
から、「AirPlayレシーバー」のチェックを外す。

airplay_off

参考:Port 5000 already in use — MacOS Monterey issue

ポート番号を変更してしまう

AirPlayサーバー機能を使用したい場合は、ポート番号を変更するしかないと思われる。
port=でポート番号を指定できるので、下記のように5000以外のポートを指定する。

 

from flask import Flask

app = Flask(__name__)

if __name__ == "__main__":
app.run(host="0.0.0.0", port=6000, debug=True)

 

ちなみに

Apple ソフトウェア製品で使われている TCP および UDP ポート
Apple公式に上記のページには、特にポート番号:5000に関する記載はなかった(執筆時点)。

ninki_glog_ranking
ブログランキング・にほんブログ村へ

スポンサーリンク