解決 Python Flask 網站伺服器無法啟動的問題 [Mac M1]

在 Mac 遇到 Python Flask 網站伺服器無法啟動的問題。檢查被「AirPlay 接收器」佔用 5000 連接埠,到「系統偏好設定」關閉「AirPlay 接收器」即可解決。


錯誤狀況

在終端機輸入啟動網站伺服器的指令

% python app.py

遲遲沒有顯示以前成功啟動網站伺服器,會顯示的訊息「Running on http://xxx.xxx.xxx.xxx:5000/ (Press CTRL+C to quit)」。在瀏覽器輸入連結「http://127.0.0.1:5000/」則顯示「127.0.0.1 的存取遭拒」


問題原因

在終端機輸入指令

% lsof -i :5000

回傳結果

COMMAND   PID      USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME

ControlCe 610 USER   30u  IPv4 0x6...      0t0  TCP *:commplex-main (LISTEN)

ControlCe 610 USER   31u  IPv6 0x6...      0t0  TCP *:commplex-main (LISTEN)

原本 Python Flask 網站伺服器預定要使用的 5000 連接埠,被 ControlCe 佔用。查詢網站文章,瞭解 ControlCe 是 AirPlay 使用的服務 Control Center。


解決方法

到「系統偏好設定」輸入「AirPlay 接收器」(或者是「系統偏好設定」-->「共享」),在左側取消勾選,不開啟「AirPlay 接收器」

取消勾選 AirPlay 接收器
回到終端機,再次輸入指令:

% lsof -i :5000

沒有回傳任何結果,確認已經關閉「AirPlay 接收器」。

再次輸入啟動 Python Flask 網站伺服器的指令:

% python app.py

可以順利看到「Running on http://xxx.xxx.xxx.xxx:5000/ (Press CTRL+C to quit)」,代表已經順利啟動網站伺服器。

再次輸入指令:

% lsof -i :5000

可以看到 Python 使用 5000 連接埠

COMMAND   PID      USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME

Python  38629 USER    3u  IPv4 0x6...      0t0  TCP *:commplex-main (LISTEN)

Python  38644 USER    3u  IPv4 0x6...      0t0  TCP *:commplex-main (LISTEN)

Python  38644 USER    4u  IPv4 0x6...      0t0  TCP *:commplex-main (LISTEN)


參考資料

留言