Python パッケージのインストールおよびインポート
組み込み Python では、何千もの便利なライブラリに簡単にアクセスできます。一般に "パッケージ" と呼ばれますが、これらは使用する前に InterSystems IRIS のファイル・システムにインストールする必要があります。その後、コードで使用するために、インポートしてメモリにロードする必要があります。これを行うには、組み込み Python の使用方法によって、さまざまな方法があります。
Python パッケージのインストール
組み込み Python で使用する前に、コマンド行から Python パッケージをインストールします。使用するコマンドは、InterSystems IRIS を UNIX ベースのシステム (AIX を除く)、AIX、Windows、またはコンテナのいずれで使用するかによって異なります。
UNIX ベースのシステム (AIX を除く) への Python パッケージのインストール
UNIX ベースのシステムでは、python3 -m pip install --target <installdir>/mgr/python <package> コマンドを使用します。
まだインストールしていない場合は、まずシステムのパッケージ・マネージャでパッケージ python3-pip をインストールしてください。
例えば、ReportLab Toolkit は、PDF およびグラフィックを生成するためのオープン・ソース・ライブラリです。UNIX ベースのシステムでは、以下のようなコマンドを使用してインストールします。
$ python3 -m pip install --target /InterSystems/IRIS/mgr/python reportlab
パッケージを正しいターゲット・ディレクトリにインストールしなければ、組み込み Python はパッケージをインポートできません。例えば、--target 属性を指定せずに (および sudo を使用せずに) パッケージをインストールする場合、Python はホーム・ディレクトリ内のローカル・パッケージ・リポジトリにパッケージをインストールします。他のユーザがパッケージをインポートしようとすると、失敗します。
インターシステムズでは --target <installdir>/mgr/python オプションを使用することを推奨していますが、sudo を使用して --target 属性を省略してパッケージをインストールすると、パッケージはグローバル・パッケージ・リポジトリにインストールされます。これらのパッケージは、どのユーザでもインポートできます。
AIX への Python パッケージのインストール
AIX で、AIX Toolbox for Open Source SoftwareOpens in a new tab (利用できる場合) からパッケージをインストールします。
パッケージをインストールする前に、コマンド sudo dnf list | grep <package> を使用して、パッケージが AIX Toolbox にあることを確認します。次に、コマンド sudo dnf install <package> を使用してパッケージをインストールします。
まだインストールしていない場合は、まず AIX Toolbox からパッケージ python3.9-pip をインストールしてください。
例えば、パッケージ psutil が AIX Toolbox であることを確認します。
$ sudo dnf list | grep psutil
python3-psutil.ppc 5.9.0-2 AIX_Toolbox
python3-psutil-tests.ppc 5.9.0-2 AIX_Toolbox
python3.9-psutil.ppc 5.9.0-2 AIX_Toolbox
python3.9-psutil-tests.ppc 5.9.0-2 AIX_Toolbox
次に、パッケージをインストールします。
$ sudo dnf install python3-psutil.ppc
パッケージが AIX Toolbox にない場合のみ、以下のコマンドを使用してインストールします。
$ python3 -m pip install <package>
Windows への Python パッケージのインストール
Windows では、<installdir>/bin ディレクトリから組み込みの irispip コマンドを使用します : irispip install --target <installdir>\mgr\python <package>。
例えば、以下のようにして Windows マシンに ReportLab パッケージをインストールできます。
C:\InterSystems\IRIS\bin>irispip install --target C:\InterSystems\IRIS\mgr\python reportlab
コンテナへの Python パッケージのインストール
永続的な %SYS 機能を使用せずに、コンテナで InterSystems IRIS を実行している場合は、コマンド python3 -m pip install --target /usr/irissys/mgr/python <package> を使用します。
例えば、以下のようにしてコンテナに ReportLab パッケージをインストールできます。
$ python3 -m pip install --target /usr/irissys/mgr/python reportlab
永続的な %SYS 機能を使用して、コンテナで InterSystems IRIS を実行している場合は、コマンド python3 -m pip install --target <durable>/mgr/python <package> を使用します。<durable> は、コンテナの実行時に環境変数 ISC_DATA_DIRECTORY で定義されたパスです。
例えば、ISC_DATA_DIRECTORY=/durable/iris の場合、以下のようにしてコンテナに ReportLab パッケージをインストールできます。
$ python3 -m pip install --target /durable/iris/mgr/python reportlab
注意 : Dockerfile を使用して InterSystems IRIS のカスタム Docker イメージを作成する場合は、/usr/irissys/mgr/python に Python パッケージをインストールします。/usr/irissys/mgr/python と <durable>/mgr/python の両方が既定で sys.path に含まれているため、永続的な %SYS 機能を使用しているかどうかに関係なくパッケージを見つけることができます。
コンテナの作成と実行の詳細は、"コンテナ内でのインターシステムズ製品の実行" を参照してください。
Python パッケージのインポート
パッケージをインストールした後、InterSystems IRIS から使用するにはこれをインポートする必要があります。これにより、パッケージがメモリにロードされ、使用できるようになります。
ObjectScript からの Python パッケージのインポート
ObjectScript から Python パッケージをインポートするには、%SYS.PythonOpens in a new tab クラスの Import() メソッドを使用します。以下に例を示します。
set pymath = ##class(%SYS.Python).Import("math")
set canvaslib = ##class(%SYS.Python).Import("reportlab.pdfgen.canvas")
上記の最初の行は、組み込みの Python math モジュールを ObjectScript にインポートします。2 番目の行は、ReportLab の pdfgen サブパッケージから canvas.py ファイルのみをインポートします。
Python で記述されたメソッドからの Python パッケージのインポート
Python で記述された InterSystems IRIS メソッドで、他の Python コードの場合と同様にパッケージをインポートできます。以下に例を示します。
ClassMethod Example() [ Language = python ]
{
import math
import iris
import reportlab.pdfgen.canvas as canvaslib
# Your Python code here
}
XData ブロックを使用した Python パッケージのインポート
以下の例のように、クラス内の XData ブロックを使用してパッケージのリストをインポートすることもできます。
XData %import [ MimeType = application/python ]
{
import math
import iris
import reportlab.pdfgen.canvas as canvaslib
}
XData ブロックの名前は %import にする必要があります。MIME タイプは、application/python または text/x-python にできます。行のインデントの考慮を含め、正しい Python 構文を使用してください。
その後、これらのパッケージは、Python で記述されたクラス内の任意のメソッドで使用できます。再度インポートする必要はありません。
ClassMethod Test() [ Language = python ]
{
# Packages imported in XData block
print('\nValue of pi from the math module:')
print(math.pi)
print('\nList of classes in this namespace from the iris module:')
iris.cls('%SYSTEM.OBJ').ShowClasses()
}
XData ブロックの背景情報は、"XData ブロックの定義と使用" を参照してください。