类对象支持库。路径:支持库 → 扩展类库 → Python类。
类型名写「Python类」。声明时自动创建。
在 IDE 里开通 Python类 后才能编译。编进用户程序之后,运行时不再检查授权。嵌入式 Python 与第三方包本身不另收费。
发布体积:清楚说一遍
| 部分 | 是否进 exe | 大概体积 | 谁负责带上 |
|---|---|---|---|
Python类桥接(ypl_lib_python) |
编进 exe | 很小(通常几百 KB 量级) | 编译自动链接 |
嵌入式 CPython(python/) |
与 exe 同级 | 约 10~15MB(官方 Windows embeddable) | 发布打包可选附带,或目标机自备 |
第三方库(pydeps/ 等) |
与 exe 同级 | 看你用了哪些包(几 MB~几十 MB 很常见) | 发布打包可选附带,或目标机自备 |
结论:
- 只用标准库:exe 仍然轻;分发时带上
python/即可。 - 用了 numpy / requests / 其它包:体积主要来自这些包,与「有没有写 Python类」无关——类本身几乎不加 exe 重量。
- 不勾选附带:可以,但你必须保证用户机有可用的 Python 与对应模块,否则运行失败。
发布打包(IDE)
菜单「发布打包」在工程源码出现 Python类 时,会多出一组选项:
- 附带嵌入式 Python 运行时(python/) — 可勾可不勾
- 附带工程第三方模块目录(pydeps/) — 可勾可不勾
预览区「将包含的内容」会列出:
- 检测到的
python/来源与约估体积 - 工程
pydeps/里有哪些顶层项与约估体积 - 源码里写过的
加入搜索路径("…")模块名(便于核对漏带)
勾选后,打包会把对应目录拷到分发文件夹(与 exe 同级)。安装包生成时会一并打进安装目录。
运行时查找顺序
置主目录(路径)(须在确保运行时之前)- 环境变量
YSTUDIO_PYTHON_HOME(可选,不是必须) - 程序目录旁:
python/、Python/、runtime/python/ - 本机 PATH / 常见安装目录(方便开发机;架构须与程序一致)
IDE 可将官方 embeddable 放到旁路目录(约 10~15MB/架构),不必设环境变量:
YStudio.exe
python_x86/
python_x64/
一键下载:build\stage_python_embed.ps1(说明见 build/stage_python_embed.md)。F5 会按工程架构同步到程序旁 python/。
硬约束
- 类型名必须写「Python类」。
- 需要固定目录时先
置主目录,再确保运行时。 - 回调里的文本只在函数返回前有效。
加入搜索路径不联网安装,只把本地目录挂到sys.path。
快速开始
Python类 py
如果 (py.确保运行时()) {
py.置整数("n", 3)
py.执行("result = n * n")
调试输出(py.执行取回("result"))
}
本地第三方包示例:把模块放到工程 pydeps/某包/,再:
py.加入搜索路径("某包")
方法
| 方法 | 说明 |
|---|---|
置主目录 / 取主目录 |
加载前指定 / 查询主目录 |
是否就绪 |
是否已初始化 |
确保运行时() |
加载嵌入式或本机 Python |
执行 / 执行取回 / 加载文件 |
跑脚本 |
置全局 / 取全局 |
文本全局变量 |
置整数 / 取整数 |
整数 |
置小数 / 取小数 |
浮点 |
置逻辑 / 取逻辑 |
布尔 |
调用(函数名, 参数JSON) |
调已定义函数 |
加入搜索路径 |
将本地 pydeps / site-packages 追加到 sys.path |
注册回调 |
脚本里 yst.调用 |
取错误 / 重置 |
错误与清空 |