YStudio Y++

Python类

Y++ / YStudio 开发文档 · 一点滴

类对象支持库。路径:支持库 → 扩展类库 → 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类 时,会多出一组选项:

  1. 附带嵌入式 Python 运行时(python/) — 可勾可不勾
  2. 附带工程第三方模块目录(pydeps/) — 可勾可不勾

预览区「将包含的内容」会列出:

  • 检测到的 python/ 来源与约估体积
  • 工程 pydeps/ 里有哪些顶层项与约估体积
  • 源码里写过的 加入搜索路径("…") 模块名(便于核对漏带)

勾选后,打包会把对应目录拷到分发文件夹(与 exe 同级)。安装包生成时会一并打进安装目录。

运行时查找顺序

  1. 置主目录(路径)(须在 确保运行时 之前)
  2. 环境变量 YSTUDIO_PYTHON_HOME(可选,不是必须)
  3. 程序目录旁:python/、Python/、runtime/python/
  4. 本机 PATH / 常见安装目录(方便开发机;架构须与程序一致)

IDE 可将官方 embeddable 放到旁路目录(约 10~15MB/架构),不必设环境变量:

YStudio.exe
python_x86/
python_x64/

一键下载:build\stage_python_embed.ps1(说明见 build/stage_python_embed.md)。F5 会按工程架构同步到程序旁 python/。

硬约束

  1. 类型名必须写「Python类」。
  2. 需要固定目录时先 置主目录,再 确保运行时。
  3. 回调里的文本只在函数返回前有效。
  4. 加入搜索路径 不联网安装,只把本地目录挂到 sys.path。

快速开始

Python类 py
如果 (py.确保运行时()) {
    py.置整数("n", 3)
    py.执行("result = n * n")
    调试输出(py.执行取回("result"))
}

本地第三方包示例:把模块放到工程 pydeps/某包/,再:

py.加入搜索路径("某包")

方法

方法 说明
置主目录 / 取主目录 加载前指定 / 查询主目录
是否就绪 是否已初始化
确保运行时() 加载嵌入式或本机 Python
执行 / 执行取回 / 加载文件 跑脚本
置全局 / 取全局 文本全局变量
置整数 / 取整数 整数
置小数 / 取小数 浮点
置逻辑 / 取逻辑 布尔
调用(函数名, 参数JSON) 调已定义函数
加入搜索路径 将本地 pydeps / site-packages 追加到 sys.path
注册回调 脚本里 yst.调用
取错误 / 重置 错误与清空