第四章 使用嵌入式 Python(一)
第四章 使用嵌入式 Python (一)
嵌入式 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()
方法打印当前命名空间中的类列表。
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
:
C:\InterSystems\IRIS\bin>set IRISUSERNAME = <username>
C:\InterSystems\IRIS\bin>set IRISPASSWORD = <password>
C:\InterSystems\IRIS\bin>set IRISNAMESPACE = USER
C:\InterSystems\IRIS\bin>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
。
/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
,然后选中启用服务框。