使用Eel框架运行项目时遇文件不存在及WinError 10048错误求助
问题分析与解决方案
1. 文件不存在错误处理
请求的URL http://localhost:8000/index.html 导致错误:文件不存在的核心原因是项目目录结构不符合Eel的初始化约定:
Eel通过eel.init("web")指定静态资源根目录为web文件夹,这意味着所有前端文件(index.html、main.js)必须放在该web目录下。如果你的前端文件直接和logic.py同级,Eel会找不到对应资源。
正确项目结构:
你的项目文件夹/ ├─ logic.py └─ web/ ├─ index.html └─ main.js
2. WinError 10048 端口占用处理
OSError: [WinError 10048]表示8000端口已被其他程序占用,Eel无法绑定该端口启动服务。解决方法有两种:
- 指定其他空闲端口:修改
eel.start()参数,指定未被占用的端口(比如8080):eel.start("index.html", port=8080) - 释放8000端口:打开命令提示符,执行以下命令找到并结束占用端口的进程:
将命令中的netstat -ano | findstr :8000 taskkill /PID 进程ID /F进程ID替换为netstat输出的数字即可。
3. 额外代码优化(非报错原因,修复功能缺陷)
你的HTML按钮点击事件存在语法问题:onclick="data"应改为onclick="data()",否则点击按钮不会触发data()函数。修正后的按钮代码:
<button onclick="data()">提交</button>
修正后的完整代码
logic.py
import eel eel.init("web") @eel.expose def ret(x): print(x) # 指定8080端口避免占用冲突 eel.start("index.html", port=8080)
web/index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script type="text/javascript" src="/eel.js"></script> <script type="text/javascript" src="main.js"></script> <title>s</title> </head> <body> <input type="text" id="text"> <button onclick="data()">提交</button> </body> </html>
web/main.js
function data(){ var x = document.getElementById("text").value eel.ret(x)() }
按上述步骤调整后,重新运行logic.py即可正常启动服务并加载页面。
内容的提问来源于stack exchange,提问作者YveRadvir
相关产品推荐
相关产品推荐

