使用嵌入式 Python (一)

2022-08-04 13:49:06 浏览数 (1)

嵌入式 Python 允许使用 Python 作为编程 IRIS 应用程序的本机选项。

预备知识

使用嵌入式 Python 所需的 Python 版本取决于运行的平台。

在 Microsoft Windows 上,IRIS 安装工具包安装正确版本的 Python(当前为 3.9.5),仅用于嵌入式 Python。如果在开发机器上并希望将 Python 用于一般用途,建议从 https://www.python.org/downloads/ 下载并安装相同的版本。

许多基于 UNIX 的操作系统都安装了 Python。如果需要安装,请使用包管理器为操作系统推荐的版本,例如:

  • macOS:使用 Homebrew 安装 Python 3.9 (https://formulae.brew.sh/formula/python@3.9)
  • Ubuntu: apt-get install python3
  • Red Hat Enterprise Linux or Oracle Linux: yum install python3
  • SUSE: zypper install python3

如果收到“无法加载 python”的错误,这意味着没有安装 Python,或者系统上安装了意外版本的 Python。使用上述方法之一安装或重新安装。

在基于 UNIX 的系统上,可能希望使用 pip3 命令安装 Python 包。如果尚未安装 pip3,请使用系统的包管理器安装包 python3-pip

要防止在运行 Embedded Python 时出现 IRIS_ACCESSDENIED 错误,请启用 %Service_Callin。在管理门户中,System Administration > Security > Services,选择 %Service_CallIn,然后选中启用服务框。

运行嵌入式 Python

本节详细介绍了运行 Embedded Python 的几种方法:

从Python Shell

可以从终端会话或命令行启动 Python shell

从终端启动 Python Shell

通过调用 %SYS.Python 类的 Shell() 方法,从 终端会话启动 Python shell。这将以交互模式启动 Python 解释器。终端会话中的用户和命名空间被传递给 Python shell

通过键入命令 quit() 退出 Python shell

以下示例在终端会话中从 USER 命名空间启动 Python shell。它打印斐波那契数列中的前几个数字,然后使用 IRIS SYSTEM.OBJ.ShowClasses() 方法打印当前命名空间中的类列表。

代码语言:javascript复制
USER>do ##class(%SYS.Python).Shell()
 
Python 3.9.5 (default, Jul  6 2021, 13:03:56) [MSC v.1927 64 bit (AMD64)] on win32
Type quit() or Ctrl-D to exit this shell.
>>> a, b = 0, 1
>>> while a < 10:
...     print(a, end=' ')
...     a, b = b, a b
...
0 1 1 2 3 5 8 >>>
>>> status = iris.cls('%SYSTEM.OBJ').ShowClasses()
User.Company
User.Person
>>> print(status)
1
>>> quit()
 
USER>

方法 %SYSTEM.OBJ.ShowClasses() 返回一个 IRIS %Status 值。在这种情况下,1 表示未检测到错误。

注意:使用 %SYS.Python 类的 Shell() 方法运行 Python shell 时,不需要显式导入 iris 模块。继续使用该模块。

从命令行启动 Python Shell

使用 irispython 命令从命令行启动 Python shell。这与从终端启动 shell 的工作方式大致相同,但必须传入 IRIS 用户名、密码和命名空间。

以下示例从 Windows 命令行启动 Python shell

代码语言:javascript复制
C:InterSystemsIRISbin>set IRISUSERNAME = <username>

C:InterSystemsIRISbin>set IRISPASSWORD = <password>

C:InterSystemsIRISbin>set IRISNAMESPACE = USER

C:InterSystemsIRISbin>irispython
Python 3.9.5 (default, Jul  6 2021, 13:03:56) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

在基于 UNIX 的系统上,使用 export 而不是 set

代码语言:javascript复制
/InterSystems/IRIS/bin$ export IRISUSERNAME=<username>
/InterSystems/IRIS/bin$ export IRISPASSWORD=<password>
/InterSystems/IRIS/bin$ export IRISNAMESPACE=USER
/InterSystems/IRIS/bin$ ./irispython
Python 3.9.5 (default, Jul 22 2021, 23:12:58)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

注意:如果尝试运行 import iris 并看到一条消息说 IRIS_ACCESSDENIED,请启用 %Service_Callin。在管理门户中,转至 System Administration > Security > Services,选择 %Service_CallIn,然后选中启用服务框。

0 人点赞