IBM i で Python を使ってみよう!!(1)- バージョンの確認とパッケージの導入 -

IBM i で node.js や Python が使える!?」で紹介したように、IBM i では Python を利用することもできます。

Python は「PYDATA」などと言って、いわゆる“ビッグデータ”“データサイエンティスト”界隈でも注目されている言語です。DB2 for IBM i と連携させて面白いアプリケーションが作れるかもしれませんね。

今回からの一連の記事では、IBM i への Python 環境の導入の仕方から始めて、ごくカンタンに IBM i 上で Python で書いたアプリケーションを動かすやり方を見ていきたいと思います。


実行は PASE Shell から??

IBM i で node.js を使ってみよう!!(1)- REPL から Hello World まで -」からの一連の記事で紹介した node.js と同じように、Python も Qshell ないし PASE Shell から実行します。

原因は追究していないのですが、node.js では、Qshell で実行してみた時に応答が遅かったりよくわからないエラーで異常終了したりしたことがありました。PASE Shell で稼働させている分には特に問題は起こらなかったので、Python についても私は初めから PASE Shell で稼働させています。Python も node.js も結局は PASE を使用して実装されていますので、余計な処理がなさそうだという印象もありますね(笑)

Qshell でも PASE Shell でも、十分にテストして納得がいけばどちらでもいいでしょう。

Python のバージョンの確認

Python の導入バージョンは、↓ のように行います。5733-OPS で使えるようになる Python は Python3 系です。Python2 系ではありませんのでご注意を。

対話型での実行

対話型での実行もできます。”on aix6” と出てきているのが面白いですね。

こちらは(特別推奨はしませんが) Qshell での実行画面です。”on aix6” はこちらでも同様です。

Help などの組み込み関数ももちろん使用できます。こちらはまた PASE Shell での画面です。


追加パッケージの導入

5733-OPS のオプション 2 を導入し関連した PTF を適用しただけでは、Python の実行環境だけが存在する状態になっています。

「それで何がいけないの?」と思われるかもしれませんが、Python アプリケーションからの DB2 for i へのアクセスも、IBM i のコマンド実行もできません。IBM i で動かす意味がないですよね(笑)

Node.js にしろ Python にしろ、DB2 for i や IBM i のオブジェクトやコマンド実行結果などへのアクセスができない、となると、「なんでわざわざ IBM i で動かす理由があるの?」と聞かれたときに答えにつまりませんか?!

実際、データベースアクセスのためのパッケージ、IBM i のコマンドの実行などを行えるようにするための API をまとめたパッケージが node.js にも Python にもあります。それは、やはり IBM i で動かす以上、IBM i との連携を有効に利用できるアプリケーションを開発できることが重要だ、ということなんだと思います。

Node.js ではわざわざそうした追加の「パッケージ」(データベースアクセス、コマンド実行などをできるようにする追加の機能)を別途導入する必要はありませんでした。(ただし、「IBM i で node.js を使ってみよう!!(5)- IBM i コマンドの実行(日本語を表示させる) -」で見たように XMLService のセットアップが追加で必要になる場合はありましたけど…)

Python では、データベースアクセスのためのパッケージ、IBM i オブジェクトのアクセス(コマンド実行も含む)のためのパッケージはそれぞれ追加で別途導入する必要があります。

繰り返しになりますが、5733-OPS を導入しただけの状態ではただ Python が動くだけの環境、というわけです。DB2 for IBM i へのアクセスの、IBM i オブジェクトへのアクセスもできません。

個別追加パッケージの導入

Installing shipped add-ons」を参考に、それぞれのパッケージを導入していきましょう。

Python には DB2 for i アクセス、IBM i オブジェクトアクセスのためのパッケージ以外にも、一般的によく使用されるパッケージが同梱されています。現時点では、Fast CGI を使えるようにする Flipflop パッケージ、Web フレームワークである Bottle が同梱されています。

パッケージは easy-install3 というツール/コマンドを使って導入します。それぞれの導入画面を添付しますので、参考にしてみてください。

データベースアクセスパッケージ(ibm_db)の導入

まず、DB2 for i に SQL アクセスするためのパッケージです。ちなみに、特に順番に依存関係はないはずなので、どのパッケージから導入しても OK だと思います。

IBM i アクセス(コマンドなどの実行)のための API パッケージ(IBM i python toolkit)の導入

IBM i のオブジェクトへのアクセスやコマンドを実行するために使用されるパッケージです。SQL アクセスは、↑ のパッケージだけではなく、このパッケージの API を使ってもできるようになっています。

(2015/9/24 追記) SI57953 を適用すると Python Toolkit for IBM i のバージョンが 1.0 から 1.1 に上がります。PTF によって提供されるのはインストール元となる egg パッケージなので、Python 環境への egg パッケージからの導入作業が必要になります。↓のように上書きインストールを行って反映させましょう。SI57953 が適用されている環境で、はじめて Python Toolkit for i を新規導入する場合は ↑ のやり方で OK だと思います。

↓ のように「Finished processing dependencies for itoolkit==1.1」と出てくれば、導入は正常に完了です。

今後、既存のバージョンを上書きする PTF が適用された場合は、↑ のようにバージョンを指定した egg ファイルから追加導入をする必要があります。

この Toolkit を使うにはさらに XMLSERVICE の導入が必要になります。

XMLSERVICE の導入については「Node.js でも Python でも必要になる XMLService ってどんな機能!?」などを参考にしてみてください。

FastCGI のためのパッケージ(flipflop)の導入

このパッケージは IBM i 専用のものではありません。よく使われるということでの同梱なのでしょう。FastCGI を使うためのものです。

Web アプリケーションフレームワークの Bottle の導入

このパッケージも IBM i 専用のものではありません。Python では一般的によく使われる Web フレームワークです。

導入されているパッケージの確認

結果として、↓ のように 4つのパッケージが導入された状態になります。

これで Python を IBM i で使う準備ができました。


次回は、Python で書いたごくカンタンなアプリケーションを動かしてみたいと思います。

[Top Pageに戻る]

Ads by TOK2