Flask服务器绑定IP固定为127.0.0.1问题求助
Flask代码中修改host/port无效的原因及解决办法
核心原因
你遇到的问题本质是启动方式不同导致配置优先级不同:
- 当你用终端命令
flask run -h 0.0.0.0启动时,是通过Flask的CLI(命令行工具)启动服务器,这时候会忽略代码里if __name__ == '__main__'块中的app.run()配置。 - 代码里的
app.run()只有在直接运行该Python文件时才会生效(比如执行python your_app.py),如果是通过flask run启动,这个代码块根本不会被执行。
另外也可能存在一种情况:你的Python文件被当作模块导入到其他文件中启动,此时__name__的值不是'__main__',导致app.run()代码块没有触发。
解决办法
方法1:直接运行Python文件生效代码配置
如果想让代码里的app.run(debug=True, host="192.168.1.222", port=5000)生效,直接在终端执行:
python your_app.py
(把your_app.py替换成你的实际文件名)
方法2:用flask run命令时指定配置
如果习惯用flask run启动,直接在命令行添加参数即可:
flask run -h 192.168.1.222 -p 5000 --debug
或者通过环境变量预先设置:
# Linux/macOS export FLASK_RUN_HOST=192.168.1.222 export FLASK_RUN_PORT=5000 export FLASK_DEBUG=1 flask run # Windows(PowerShell) $env:FLASK_RUN_HOST="192.168.1.222" $env:FLASK_RUN_PORT=5000 $env:FLASK_DEBUG=1 flask run
方法3:确保__name__条件触发
如果你的app是在一个模块中定义,然后通过其他文件启动,需要把app.run()移到启动代码中,或者确保直接运行定义app的文件,让if __name__ == '__main__'条件成立。
内容的提问来源于stack exchange,提问作者Dragos
相关产品推荐
相关产品推荐

