Python
Python 全局对象通过内嵌 Python 解释器在 Scripting app 内执行 Python 代码片段 —— 与 Python 索引脚本使用同一个运行时。适合一次性计算、临时数据处理,或在 JS / TS 脚本里调用 Python 库,而不必专门注册一个 Python 脚本。
代码以 python -c <code> 形式执行,因此每次调用都是一个全新的顶层模块 —— 不会保留上一次调用的模块状态。import 与中间值都必须写在 code 内部。
Shell.run 与 Python.run 共享同一条串行队列:其中一个执行时,其他调用排队等待。内嵌 Python 解释器与 ios_system 共享全局状态(env 变量、sys.modules),不可并发执行。
当前版本不支持
options.timeout—— 长时运行的 Python 片段会阻塞后续的Shell.run/Python.run调用直到结束。如有需要请在代码内自行实现超时逻辑。
方法
Python.run(code, options?): Promise<{ output, exitCode }>
执行一段 Python 代码。代码退出时返回。
ShellRunOptions
返回值
与
Shell.run不同,Python.run返回值不包含timedOut/cancelled字段,因为底层 Python 桥没有超时 / 取消原语。
关于 env 注入
内嵌 Python 解释器在首次 Py_Initialize 时对 os.environ 做快照,Swift 端的纯 setenv 调用不会反向同步到 Python 后续对 os.environ 的读取。为了让 env 与 queryParameters 真正在代码内可见,宿主会在用户代码前注入一段小 prelude,在 Python 层 os.environ.update(...)。整个过程对调用者透明 —— code 原样执行。代码内通过 subprocess、os.system 等派生的子进程也能拿到这些变量,因为 setenv 同时也被应用。
