IBM iでもyumでPythonをさくっとインストール
yumが使えるようになったIBM iはPythonに限らず、さまざまなオープンソースの実行環境を簡単に作れます。
事前にyumをインストールする手順はこちら(IBM i でyumを使う)の記事を参考にしてください。
Python2はyum導入時に一緒にインストールされているので、ここから先はPython3の環境をセットアップしていきます。
Python3のインストールにはACSのGUIか、SSHのCLIが使えます。
方法1:Python3をACSのGUIでインストール
ACSを起動して[ツール]メニューの[オープン・ソース・パッケージ管理]を開きます。
Python3を導入するSystemとUSRPRFを指定して[OK]で進みます。
Available packagesのタブに、導入可能なパッケージ一覧が確認できます。Python3のパッケージも随時追加されているようです。
ここではまず、2つのパッケージ python3 と python3-pip を選択して[install]ボタンを押しました。
別ウィンドウが起動して、yum installコマンドが実行されます。依存関係がある別パッケージも同時に選択されていることがわかります。yでインストールを実行します。
導入完了を確認します。
ACSのGUIで簡単にPythonが導入できます。他にも必要なパッケージがあれば、同様の手順で追加インストールできます。
方法2:SSHクライアントからyumコマンドでインストール
ACSのGUIを使うだけでなく、Linuxと同様にSSHクライアントのCLIで操作することももちろんできます。
SSHターミナルでibmiに接続します。
$ ssh user@ibmi
bashを使います。
$ bash
python3関連のパッケージを確認します。
bash-4.4$ yum list | grep python3
python3.ppc64 3.6.9-1 @ibm
python3-pip.noarch 9.0.1-2 @ibm
python3-setuptools.noarch 36.0.1-2 @ibm
python3-wheel.noarch 0.29.0-2 @ibm
python3-Pillow.ppc64 5.0.0-4 ibm
python3-asn1crypto.noarch 0.24.0-0 ibm
python3-bcrypt.ppc64 3.1.4-5 ibm
python3-cffi.ppc64 1.11.5-2 ibm
python3-cryptography.ppc64 2.2.2-4 ibm
python3-dateutil.noarch 2.7.5-0 ibm
python3-devel.ppc64 3.6.9-1 ibm
python3-ibm_db.ppc64 2.0.5.9-0 ibm
python3-idna.noarch 2.8-0 ibm
python3-itoolkit.ppc64 1.6.1-0 ibm
python3-lxml.ppc64 4.2.1-3 ibm
python3-numpy.ppc64 1.15.4-0 ibm
python3-pandas.ppc64 0.22.0-4 ibm
python3-psutil.ppc64 5.5.1-0 ibm
python3-pycparser.ppc64 2.19-1 ibm
python3-pynacl.ppc64 1.2.1-3 ibm
python3-pytz.noarch 2018.5-2 ibm
python3-pyzmq.ppc64 17.1.2-0 ibm
python3-rpm.ppc64 4.13.0.1-17 ibm
python3-scikit-learn.ppc64 0.19.1-6 ibm
python3-scipy.ppc64 1.1.0-0 ibm
python3-six.noarch 1.10.0-0 ibm
python3-tkinter.ppc64 3.6.9-1 ibm
numpy と pandas を追加で導入してみます。
bash-4.4$ yum install python3-numpy python3-pandas
Setting up Install Process
(中略)
===================================================================================================================
Package Arch Version Repository Size
===================================================================================================================
Installing:
python3-numpy ppc64 1.15.4-0 ibm 6.3 M
python3-pandas ppc64 0.22.0-4 ibm 20 M
Installing for dependencies:
libblas3 ppc64 3.8.0-0 ibm 173 k
libcblas3 ppc64 3.8.0-0 ibm 49 k
libgcc-aix fat 6.3.0-24 ibm 472 k
libgfortran3 ppc64 6.3.0-24 ibm 1.0 M
liblapack3 ppc64 3.8.0-0 ibm 3.4 M
Transaction Summary
===================================================================================================================
Install 7 Packages
Total download size: 31 M
Installed size: 147 M
Is this ok [y/N]: y
(中略)
Installed:
python3-numpy.ppc64 0:1.15.4-0 python3-pandas.ppc64 0:0.22.0-4
Dependency Installed:
libblas3.ppc64 0:3.8.0-0 libcblas3.ppc64 0:3.8.0-0 libgcc-aix.fat 0:6.3.0-24 libgfortran3.ppc64 0:6.3.0-24
liblapack3.ppc64 0:3.8.0-0
Complete!
yumコマンドでも簡単に追加ができました。
SSHクライアントであれば、IBM iだと意識せずに、yumコマンドでオープンソース環境を管理できます。
Pythonの起動確認
sshクライアントでPython3を起動してみます。
bash-4.4$ python3
Python 3.6.9 (default, Oct 31 2019, 11:30:53)
[GCC 6.3.0] on aix7
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> import pandas as pd
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/QOpenSys/pkgs/lib/python3.6/site-packages/pandas/__init__.py", line 19, in <module>
"Missing required dependencies {0}".format(missing_dependencies))
ImportError: Missing required dependencies ['pytz', 'dateutil']
pandas をインポートしたら pytz と dateutil がないというエラーが出ました。Pythonなのでpipで追加することを考えますが、IBM iでは、yumパッケージとして提供されている場合があるのでyumを先に確認します。
>>> exit()
bash-4.4$ yum list | grep python3
(中略)
python3-dateutil.noarch 2.7.5-0 ibm
(中略)
python3-pytz.noarch 2018.5-2 ibm
2つともyumにあったので、yumでインストールします。
bash-4.4$ yum install python3-dateutil python3-pytz
再度Python3を起動してpandasをインポートしてみます。
bash-4.4$ python3
Python 3.6.9 (default, Oct 31 2019, 11:30:53)
[GCC 6.3.0] on aix7
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> import pandas as pd
>>> data = pd.Series([1.0, 2.4, 5.3, 7], index=['a', 'b', 'c', 'd'])
>>> data
a 1.0
b 2.4
c 5.3
d 7.0
dtype: float64
>>> exit()
IBM i 上にPython3の実行環境ができました。
最後に
IBM iでも、Pythonの環境を簡単に準備できます。yumをサポートしたので基本的にはCLIで管理できますが、ACSでGUIのインターフェースも用意しているのがIBM iらしく思えます。
PCでもPythonを動かせますが、IBM iをPython環境として整備すれば、IBM iのデータを扱いやすくなりますし、チームでの開発もしやすいのではないでしょうか。
この記事の方法では、Python3の実行環境をroot環境に作っていますが、chrootを使えばコンテナのように環境仮想化ができるので、目的に合わせてパッケージの組み合わせを選んだり、root環境をクリーンに保ったまま、オープンソースを活用することもできます。
次回はchrootを使って仮想環境を作った上で、jupyter notebookを動かしたいと思います。