chakcy d58be74123 fix: 生成项目补齐 --encrypt/--license 构建契约(网关收集项、[license] 注入点)
- config.toml:--encrypt 会先 PyArmor 混淆 main.py / server.py,PyInstaller 静态
  分析跟不到 `from chongming.app import app`,网关包整个漏收(打包"成功"、产物
  启动报 No module named 'chongming')—— 显式列 chongming / chongming.app 等入口包;
- public/config.toml:补 [license] 段(public_key 留空),--license 的注入点;
- README.project.md:补授权公钥前置条件(keygen → license_public.key 或环境变量),
  以及 --only 对 obfuscate 同样划界(加密构建要显式带上,否则混淆被静默跳过)。
2026-10-14 15:29:25 +08:00

chongming 项目模板

以 chongming 网关宿主项目(chongming-core / chongming-zenoh)为蓝本的项目模板: 初始化出一个开箱可跑的网关项目——宿主骨架(public/)+ 内置插件最小示例 (src/plugins/example/)+ 配置(config/)+ 构建配置,不含 utils/:网关与全部 chongming-* 工具包都通过 uv 从私有源安装。

初始化新项目

python init.py <目标目录> [--name 项目名] [--app-name 应用名] [--no-sync]

# 例:目录名即项目名
python init.py ~/proj/my-gateway

# 例:指定项目名与应用显示名
python init.py ../demo-gateway --name demo-gateway --app-name "演示网关"

脚本会:拒绝覆盖非空目录 → 复制模板(README.project.md → README.md)→ 替换 {{project_name}} / {{app_name}} 占位符 → 执行 uv sync。

生成后:

cd <目标目录>
uv run serve                                          # http://localhost:8000/docs
curl 'http://localhost:8000/api/v1/example/hello?name=world'

模板内容

pyproject.toml          # 宿主依赖(chongming-gateway + 骨架依赖)与 dev 工具
config.toml             # 应用主配置:环境/服务器/缓存/MQTT/打包收集清单/module_system
plugins_deps.toml       # 内置插件专属依赖(打包收集用,空模板)
.python-version         # 解释器版本(uv 用)
init.py                 # 本初始化脚本(不复制进目标项目)
README.project.md       # 生成项目里的 README(初始化时重命名为 README.md)
public/                 # 可执行文件打包骨架:main.py / server.py / utils / ico / 运行时 config.toml
config/                 # 项目配置:zenoh_config.json5 + workers/example(示例插件注册与端点)
src/plugins/example/    # 内置插件最小示例:Plugin 生命周期 + @rpc_method + gen_models 产物

生成项目的常用命令

uv run serve                                   # 启动(热重载)
uv run gen_plugin <name> [operation ...]       # 生成内置插件骨架(--process 生成进程插件项目)
uv run gen_models config/workers/<name> src/plugins/<name>   # 按 TOML 生成 Pydantic 模型
uv run build pyinstaller                       # 打包可执行文件(Nuitka 用 uv run build nuitka)
uv run build_plugin <name>                     # 进程插件打包 → dist/<name>.zip

维护模板

  • 骨架(public/)、示例插件与配置结构源自 chongming-core 仓库,改动时从那边同步; 同步后建议用 init.py 生成一个临时项目验证 uv run serve 可启动。
  • 占位符只有两个:{{project_name}}(pyproject 的 name)、{{app_name}} (config.toml 与 public/config.toml 的 app.name / app.description)。
  • 依赖版本不写死:网关与工具包按私有源最新发布版解析;需要锁定时在生成的项目里 uv lock 提交 uv.lock 即可。
S
Description
No description provided
Readme
296 KiB
Languages
Python 100%