## 一、使用的依赖管理体系 本仓库**没有传统的包管理器**:根目录与所有子目录下不存在 `package.json`、`go.mod`、`requirements.txt`、`Pipfile*`、`*.lock`、`.npmrc` 等任何依赖声明文件;前端侧使用浏览器原生 ES module(`type="module"`)通过相对路径直接引用 `../css/*`、`../js/common/*`,不经过 npm/yarn/pnpm 解析。 Python 后端 (`esp32_server.py`) 仅依赖 Python **标准库**(`http.server.SimpleHTTPRequestHandler` / `ThreadingHTTPServer`、`socket`、`subprocess`、`ctypes`、`urllib.request`、`threading`、`hashlib` 等),以及一个可选的桌面外壳依赖 `pywebview`。该可选依赖在运行时探测缺失时回退到普通浏览器模式:`print("pywebview 未安装: pip install pywebview —— 回退浏览器模式")`,并通过 `serve.bat` / `esp32_web.vbs` 走无 GUI 路径。 非 Python 二进制依赖以独立可执行形式存在:EtherCAT 后端为编译后的单文件 `build_native/ecat_native.exe`(由外部脚本 `build_native.bat` 构建),由主服务按需在 8090–8095 端口范围内发现并启动(带 `--parent-pid` 实现父进程退出时自我结束),不属于当前仓库的包依赖图。 ## 二、关键文件 - `esp32_server.py`:唯一 Python 入口;通过 `import http.server`、`ctypes`、`subprocess` 等标准库提供服务、反向代理、窗口管理与 ecat 子进程编排。 - `README.md`:文档化的启动方式(`esp32_app.vbs` / `esp32_web.vbs` / `serve.bat`),明确了 pywebview 可选性以及 ecat_native 的外部依赖关系。 - `scripts/build_mem.bat`:调用 ESP-IDF 构建 DCU/ESP32_COMM 固件的辅助脚本,不引入 Python/JS 依赖。 - `js/`、`pages/`、`css/`:纯前端资源,无任何 `