You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将PyWebIO开发的BMI工具部署为可公网访问的永久地址

第一步:修正代码逻辑错误

你现有代码存在两处逻辑问题,会导致web服务无法正常启动:

  1. bmi() 直接在if __name__ == '__main__'代码块内执行,优先走了本地交互模式,没有启动web服务
  2. start_server() 放在了主判断块外部,不会被正常执行

修正后的完整代码如下:

# 先执行安装依赖:pip install pywebio
from pywebio.input import input, FLOAT
from pywebio.output import put_text
from pywebio import start_server

def bmi():
    height = input("Input your height(cm):", type=FLOAT)
    weight = input("Input your weight(kg):", type=FLOAT)

    BMI = weight / (height / 100) ** 2

    top_status = [(16, 'Severely underweight'), (18.5, 'Underweight'),
                  (25, 'Normal'), (30, 'Overweight'),
                  (35, 'Moderately obese'), (float('inf'), 'Severely obese')]

    for top, status in top_status:
        if BMI <= top:
            put_text('Your BMI: %.1f. Category: %s' % (BMI, status))
            break

if __name__ == '__main__':
    start_server([bmi], host='0.0.0.0', port=8080)

第二步:公网访问配置方案

根据使用需求选择对应方案即可:

方案1:临时公网测试(无需额外服务器)

适合开发阶段临时分享使用,地址每次重启会变化,有效期数小时。
只需要在start_server参数中添加remote_access=True即可:

start_server([bmi], host='0.0.0.0', port=8080, remote_access=True)

启动后控制台会直接输出可用的公网访问地址,直接访问即可。

方案2:永久公网访问(需要带公网IP的云服务器)

适合正式对外提供服务使用,地址固定:

  • 把修正后的代码上传到云服务器,执行pip install pywebio安装依赖
  • 确认云服务器的安全组/防火墙已经放行8080端口的入站规则
  • 执行nohup python3 你的代码文件名.py & 后台启动服务,关闭SSH连接不会中断服务
  • 直接通过 云服务器公网IP:8080 即可访问服务,如有域名可以解析到服务器公网IP,搭配Nginx反向代理可实现无需端口号、HTTPS加密访问。

内容的提问来源于stack exchange,提问作者Cassie Chu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:48:04