playbook/docs/tsl/modules/tsl_python_interop.md

94 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 天软平台和 Python 的交互
文档类型:模块摘要
是否可直接用于生成代码:否
是否含已验证可执行示例:否
是否含已验证反例:否
遇到不确定时跳转到:项目级部署文档、对应官方文档、[pytsl_api.md](pytsl_api.md)、[index.md](index.md)
本页用于接入决策和最小链路确认,不替代项目级部署文档。
- 如果登录方式、凭证来源、位数、环境变量、连接通道或部署入口没有确认,不继续生成接入代码,直接回项目级部署文档或对应官方文档。
## 摘要
- 覆盖三类交互Python 调用 TSL、TSL 调用 Python、落地服务器开启 Python 服务。
- 提供 COM/远程登录两种路径,以及 `PyRun`/`PyCall` 体系。
## 怎么选路
| 场景 | 先选哪条路 | 最小前置条件 | 常见失败点 |
| --- | --- | --- | --- |
| Python 作为主控,远程执行或调用 TSL | Python 调 TSL | Python 环境、TSLPy 模块、可用连接方式COM / 远程登录) | 位数不一致、环境变量没配好、服务器未登录 |
| TSL 脚本里需要调用现有 Python 代码 | TSL 调 Python | TSL 与 Python 位数一致、`PYTHONHOME` 等环境正确 | Python 环境未就绪、模块找不到、网格场景不支持 |
| 落地服务器侧长期提供 Python 能力 | 落地服务器开启 Python 服务 | 服务端环境、部署权限、可维护的脚本入口 | 服务端环境和本地环境不一致、依赖未部署、运行权限不足 |
## 结构索引
- 支持版本
- Python 调用 TSL配置步骤 / 接口说明 / 范例
- TSL 调用 Python配置步骤 / 接口说明 / 范例
- do Python 方式
- 落地服务器开启 Python 服务
- sklearn 机器学习接口
- 附录与 FAQ
## Python 调用 TSL核心步骤
1. 先确认项目级部署文档里的天软目录、Python 目录、位数、连接通道和登录方式。
2. 配置环境变量天软目录、Python 目录)。
3. 加载 TSLPy 模块(直接加载或修改包名)。
4. 选择连接方式COM / 远程登录)。
5. 登录服务器后,再执行 `RemoteExecute` / `RemoteCallFunc`
6. 完成后显式断开连接。
## 主要接口Python 侧)
- 服务器:`ConnectServer` / `LoginServer` / `Disconnect`
- 执行:`RemoteExecute` / `RemoteCallFunc`
- 系统参数:`SetSysParam` / `GetSysParam`
- 日期转换:`EncodeDate` / `DecodeDate` / `EncodeDateTime` / `DecodeDateTime`
## TSL 调用 Python核心接口
- `PyPutVar` / `PyGetVar`
- `PyRun`(执行脚本)
- `PyCall`(调用 Python 函数,支持命名参数)
- `PyError` / `PyRelease` / `PyEnsure`
## TSL 调用 Python核心步骤
1. 先回项目级部署文档确认位数、`PYTHONHOME`、解释器路径和可用模块。
2.`PyEnsure` 确认 Python 运行时已经就绪。
3. 需要把输入传给 Python 时,先用 `PyPutVar` 放入变量。
4. 选择执行方式:执行整段脚本用 `PyRun`,直接调函数用 `PyCall`
5. 需要取回结果时,再用 `PyGetVar` 读取输出变量。
6. 失败时先看 `PyError`,结束后显式 `PyRelease`
## 最小前置条件
- Python 与 TSL 位数必须一致。
- 多版本 Python 需同步设置 `PYTHONHOME`
- 落地前先决定是谁主控Python 主控还是 TSL 主控。
## do Python 方式
- 适合快速执行 Python 脚本,省去显式接口调用。
## 落地服务器开启 Python 服务(核心步骤)
1. 先回项目级部署文档确认服务入口、部署权限、依赖目录和守护方式。
2. 在服务器上准备与项目要求一致的 Python 运行时和依赖包。
3. 放置一个稳定的 Python 脚本或服务入口,先只承载一条最小调用链。
4. 按项目约定把这个入口接到天软侧的调用路径或调度入口。
5. 用最小请求先验证“能启动、能调用、能返回”,再扩展业务逻辑。
6. 再补日志、重启方式和运维监控;如果这些入口还没确认,不继续生成部署代码。
## 注意事项(精简)
- Python 与 TSL 位数必须一致。
- 多版本 Python 需同步设置 `PYTHONHOME`
- TSL 调 Python 不支持网格调用。
- 出现调用失败时,优先先检查环境、位数和登录状态,再排查业务逻辑。
- 如果登录方式、凭证来源、位数、环境变量、连接通道或部署入口任一没有确认,不继续生成接入代码。