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

Python Eel使用block=False时出现404错误求助

解决Eel中block=False启动时的404错误

问题根源

当使用eel.start("index_blank.html", block=False)时,Eel会启动Web服务但不会阻塞Python主线程。如果脚本没有后续逻辑维持主线程运行,Python解释器会直接退出,导致Web服务被关闭,浏览器访问时就会出现404错误。而默认的eel.start()会阻塞主线程,持续维持服务运行,因此能正常访问页面。

修复方案

核心是让主线程保持运行,同时不干扰Eel的事件循环,推荐用Eel自带的eel.sleep()实现:

import eel

# 暴露给HTML的回调函数
@eel.expose
def send_data_to_html(content):
    # 可添加逻辑处理,返回结果给HTML
    return f"Python received: {content}"

# 初始化Eel,指定HTML所在目录(同目录用".",子目录如web则填"web")
eel.init(".")
# 启动服务且不阻塞主线程
eel.start("index_blank.html", block=False)

# 维持主线程运行,避免脚本提前退出
while True:
    eel.sleep(1)

实现向HTML回传内容

要让Python主动推送内容到HTML,需在HTML中定义并暴露对应的JS函数:

index_blank.html

<!DOCTYPE html>
<html>
<head>
    <script src="/eel.js"></script>
</head>
<body>
    <div id="content"></div>
    <script>
        // 暴露JS函数给Python调用
        eel.expose(receive_data);
        function receive_data(data) {
            // 将Python传来的内容渲染到页面
            document.getElementById("content").innerText += data + "\n";
        }

        // 示例:调用Python的回调函数
        eel.send_data_to_html("Hello from HTML!")(function(response) {
            console.log(response);
        });
    </script>
</body>
</html>

之后在Python中,可随时调用eel.receive_data("Hello from Python!"),将内容推送到HTML页面。

额外注意事项

  • 确保eel.init()的路径正确,必须指向包含HTML文件的目录,否则Eel找不到页面也会触发404。
  • 若需执行其他后台逻辑,可放在eel.start()后的循环中,或用线程处理,注意线程安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:18:34