Pythonライブラリをインストールして使いたい

OSSのPythonライブラリをインストールして使ったり、自作のPythonコードを呼び出せるようにする方法を解説します。Alkano・BayoLinkSがインストールされているマシンの管理者権限が必要です。

バージョンについて

本記事では、

  • Alkano 1.5.0以上
  • BayoLinkS 9.4.0以上
  • MSIP 1.11.0以上

を対象としています。

それ以前のバージョンの場合は、マニュアルの該当箇所を御覧ください。

説明

注:本記事でご紹介する内容は、Pythonに関する基本的な知識があることを前提としています。
なお、本記事での操作は、Alkano・BayoLinkSがインストールされているマシン上で実施してください。

Pythonには数々のオープンソースソフトウェア(OSS)のライブラリが存在します。
それらのOSSライブラリをAlkano・BayoLinkSのPythonScriptアイコン内から呼び出して利用する方法をご紹介します。

また、自作のPythonコードも同様の方法でPythonScriptアイコンから利用できますので、合わせて説明します。

なお、Alkano・BayoLinkSが利用しているPythonライブラリ(例:scikit-learn)は特別な操作をせずにご利用可能です。ここではAlkano・BayoLinkSに追加でインストールするOSSライブラリや自作Pythonコード(本記事では「外部ライブラリ」と呼びます)を利用する方法をご紹介します。

注意

外部ライブラリをインストールするためには、Alkano・BayoLinkSが動作しているマシンにPython 3.12をインストールしていただく必要があります。 Python 3.12がインストールされていない場合は、事前にインストールし、管理者で実行できるようにしておいてください。

使い方

外部ライブラリは、Alkano・BayoLinkSが用意した専用のフォルダにインストールします。 デフォルトで用意されている外部ライブラリ用フォルダは、C:\MSIP\python_externalです。
Alkano・BayoLinkSのインストール先をC:\MSIPから変更している場合は、適宜パスを読み替えてください。

具体的なインストール方法を以下に示します。

  1. Alkano・BayoLinkSがインストールされているマシンにログインします。

  2. 利用したいライブラリが、すでにAlkano・BayoLinkSにインストールされているかを確認します。

Alkano・BayoLinkSにインストールされているライブラリは、MSIP インストールフォルダ下の python_requirements.txt にバージョンを含めて記載されています。

【python_requirements.txt の抜粋】

...
packaging==24.2
pandas==1.3.4
parso==0.8.4
...

エディタ等で検索し、すでにAlkano・BayoLinkSにインストールされているか確認してください。 python_requirements.txtに記載があれば、そのままライブラリをimportして利用できます。

python_requirements.txtに記載がない場合は、以下の手順に進んでください。

  1. Windowsのコマンドプロンプトを「管理者として実行」します。(管理者権限が必要です)

image.png

  1. 外部ライブラリとしてインストール可能かどうかを確認します。

以下のコマンドを実行し、エラーが発生しないことを確認してください。ここではまだライブラリのインストールはおこなわれません。

>  python -m pip install {インストールするライブラリ名} --target {外部ライブラリ用フォルダ} -c {MSIPインストールフォルダ}\python_requirements.txt --dry-run

上記コマンドを実行してエラーになる場合は、Alkano・BayoLinkSが利用しているライブラリのバージョンと、外部ライブラリが要求するライブラリのバージョンの整合性が取れないため、外部ライブラリをインストールすることができません。

  1. インストールしたいライブラリを、以下のように python -m pip install コマンドに --target オプションを付けてインストールします。

「外部ライブラリ用フォルダ」はデフォルトではC:\MSIP\python_external を指定してください。

また、Python 3.12以外のバージョンのPythonがデフォルトになっている場合は、Python 3.12の実行ファイルをフルパスで指定するか、py -3.12 -m pip install として明示的にPython 3.12を使用してください。

>  python -m pip install {インストールするライブラリ名} --target {外部ライブラリ用フォルダ} -c {MSIPインストールフォルダ}\python_requirements.txt

image.png

  1. 以下のコマンドを入力し、インストールしたライブラリにAlkano・MSIPからのアクセス権限を与えます。
> icacls {外部ライブラリ用フォルダ} /grant "LOCAL SERVICE:(R,X)" /T

image.png

ここでは、例としてlingamというOSSライブラリをインストールする方法を示します。

> python -m pip install lingam --target C:\MSIP\python_external -c C:\MSIP\python_requirements.txt

上記のコマンドを実行すると、lingamライブラリ、およびlingamライブラリが依存しているライブラリが外部ライブラリ用フォルダC:\MSIP\python_externalにインストールされます。

> icacls "C:\MSIP\python_external" /grant "LOCAL SERVICE:(R,X)" /T

を実行することで、Pythonスクリプトアイコンからインストールした外部ライブラリlingamを利用可能です。

PythonScriptアイコンの使い方の詳細は、MSIPマニュアルおよびPythonScriptアイコン使い方ガイドを参照してください。

One Point

自作の Python コード を PythonScriptアイコンで利用する方法

以下では、次の自作関数my_sum を PythonScriptアイコンで利用する方法について解説します。

# PythonScript アイコンで呼び出す2つの数の和を計算する自作関数
def my_sum(x, y):
  z = x + y
  return z
  1. python_externalフォルダ 以下にフォルダを作成します。ここでは説明のため、my_moduleという名前のフォルダを作成します。

image.png

  1. my_moduleフォルダ内に、__init__.pymy_function.pyファイルを作成し、__init__.pyには何も記述せず、my_function.pyには以下の内容を記述します。
# PythonScript アイコンで呼び出す2つの数の和を計算する自作関数
def my_sum(x, y):
  z = x + y
  return z

image.png

  1. MSIP を起動し、シナリオエリアのタイルを右クリックし、python スクリプトを追加 を選択します。

image.png

  1. Python script のノードをダブルクリックしパラメータ設定画面を開きます。パラメータ設定画面の入力設定を開き、入力となるtableの右のボタンをクリックし、入力が何もない状態にします。

image.png

  1. スクリプト内に次の内容を記述します。ここでは、作成したフォルダmy_module内のmy_function.pyに記載されているmy_sumという自作関数を呼び出し、計算結果をデータフレーム形式で出力しています。
from msi.common.dataframe import DataFrame
from my_module import my_function

# my_module 内の my_function に書かれた my_sum 関数を呼び出す
z = my_function.my_sum(2,3)

# 計算結果をデータフレームに格納し、出力します
result = DataFrame({"z":[z]})
  1. スクリプトが完成したら、PythonScriptアイコンを実行します。可視化画面からPython Script の result テーブルを確認します。1行1列のテーブルにmy_sumでの計算結果が出力されます。

image.png

外部ライブラリ用フォルダの追加方法

MSIPの「Python パス記述ファイル」に記載されているパスを追加することで、デフォルトの「外部ライブラリ用フォルダ」以外の場所も「外部ライブラリ用フォルダ」として利用することができます。
ただし、MSIPがインストールされているフォルダ(デフォルトではC:\MSIP)以下のパスは追加の「外部ライブラリ用フォルダ」に指定できません。 MSIPインストールフォルダ以外のパスを追加してください。(例:C:\use_lib_1
「Python パス記述ファイル」は、デフォルトインストールパスの場合、C:\MSIP\config\python_external_paths.txtであり、以下のような内容になっています。

# python スクリプトやライブラリを配置するフォルダのパスを各行に記載してください。
#
# 各フォルダはインストール時に指定した、MSIP のサービス実行アカウントから
# 読み取り可能なパスを設定してください。
# なお、規定の指定でインストールした場合、MSIP のサービス実行アカウントは
# LOCAL SERVICE となります。
#
# 空行や先頭が # で始まる行は無視されます。コメントとしてご利用ください。
#
# パスは絶対パス、相対パスのどちらでも可能です。
# パス区切りは / と \ の両方可能です。
# 末尾にはパス区切りは不要です。
# 相対パスでは MSIP のインストールフォルダが起点となります。
#
# このファイルは UTF-8 で記載されています。 文字コードの種類を変更せず、UTF-8 のままとしてください。

# 以下に追加したいフォルダを記載してください。

# 規定フォルダ: MSIPインストールフォルダ/python_external です。
# MSIPインストールフォルダ下で有効なパスは規定フォルダ下のみです。
python_external

このファイルにC:\user_lib_1のようにパスを追記することで、「外部ライブラリ用フォルダ」を複数指定することができます。

外部ライブラリフォルダを分けておくことで、

  • デフォルトの「外部ライブラリ用フォルダ」(C:\MSIP\python_external\)には、チームメンバーで共通で使うライブラリをインストールする
  • 追加した「外部ライブラリ用フォルダ」(例:C:\user_lib_1\)には、個人で使うライブラリや自作ライブラリをインストールする

というような活用をすることができます。

詳細はMSIPマニュアル「3.13.1. Python アイコン」をご参照ください。

注意事項

外部ライブラリ用フォルダのアクセス権限

上記ファイルのコメントにも書いてありますが、システムとの干渉を防ぐために、MSIPインストールフォルダ下で有効なパスはC:\MSIP\python_externalのみです。(MSIPインストールパスがC:\MSIPの場合)
外部ライブラリ用フォルダを追加する場合には、C:\MSIPフォルダの下以外の場所(例:C:\user_lib_1)をご指定ください。 なお、「外部ライブラリ用フォルダ」を新たに追加する場合は、そのフォルダへAlkano・MSIPからのアクセス権限を与えるため、以下のコマンドを実行する必要があります。

  • C:\user_lib_1を作成した場合
> icacls "C:\user_lib_1" /grant "LOCAL SERVICE:(R,X)" /T

Alkano・BayoLinkSが利用しているPythonライブラリとの競合

Alkano・BayoLinkSのシステムもPythonのライブラリを利用しています。
システムの動作を優先するため、 外部ライブラリはシステムが使うPythonライブラリよりもimportの優先順位が下がります
そのため、システムにインストールされているPythonライブラリと外部ライブラリが依存するライブラリとでバージョンの競合が起こった場合、外部ライブラリが正常に動作しない可能性があります。ご了承ください。

関連項目

  • MSIPマニュアル
    • 3.13.1. Python アイコン
    • 外部ライブラリを追加でインストールする