PythonxはElixir上で使えるPython処理系です.Elixirから気軽にPython資産を使えることが期待できます.
Elixirコミュニティ向けには既に, @RyoWakabayashi さんの手により,下記の記事でPythonxは紹介されています.
今回はPythonコミュニティ向けに,より基礎的なところから記述していきたいと思います.
まず,Livebookのインストール方法からです.Livebookは,Pythonで言うところのJupyterLabに相当するElixirの環境です.
まずこのページの"Install Livebook"ボタンを押します.
環境に合わせてお好きなボタンを押します.今回の説明ではMacのローカルインストールについて説明しますので,"Mac (Universal)"を選択することにします.
DockのダウンロードにLivebookのimgファイルが配置されますので,クリックして開きます.
アプリとしてインストールするには,右のLivebookアイコンを左のApplicationフォルダにドラッグして,アプリケーションからLivebookを開きます.お試しで開きたいときには,Livebookアイコンをダブルクリックします.
Livebookのホームページです.Jupyterで見慣れたような画面ですね.一応一通り簡単に説明します.
- "+ New notebook"をクリックすると,新しいノートを開くことができます.
- ノートを一旦開くと"Running Session"のところに現れるので,そちらで再開することができます.
- 右下の"Shut Down"を押すと,Livebookを完全に閉じて終了することができます.
- 残りのボタンは,いろいろ押して試してみてください.
メニューバーの右上の状況メニューにあるこのアイコンをクリックすると次のようなメニューが出てきますので,Livebookのホームページを間違えて閉じてしまったとしても,復活させることができます.
このメニューの"Open"を押せば,Livebookのホームページを開くことができます.
さて,下記に戻ります.
"+ New notebook"を押してみましょう.
最初に"Notebook dependencies and setup"を押します.
この黒い画面に次のように打ち込みます.
Mix.install([:pythonx, :kino])
"Reconnect and setup"を押します.
しばらくして,このように :ok
が出ればセットアップ完了です.
次にこの"Section"の黒い部分に次のように打ち込みます.
alias Pythonx.C
alias Pythonx.C.PyDict
alias Pythonx.C.PyErr
alias Pythonx.C.PyFloat
alias Pythonx.C.PyList
alias Pythonx.C.PyLong
alias Pythonx.C.PyObject
alias Pythonx.C.PyRun
alias Pythonx.C.PyTuple
alias Pythonx.C.PyUnicode
"Evaluate"を押します.
下の方にカーソルを持っていくと,次の3つのアイコンが登場します.
- "+ Elixir"
- "+ Block"
- "+ Smart"
"+ Elixir"を押します.
こんな感じで,新しい入力画面が出てきます.
この要領で,次のように打ち込んで,都度,"Evaluate"ボタンを押していきます.各コードの説明は,Elixir Livebook で Python コードを実行する【Pythonx】をお読みください.
Pythonx.initialize_once()
なお,このコードの説明
内部的には NIF をロードしています
で出てくる"NIF"というのは,Native Implemented Functionの略で,要はElixirからC等のネイティブコードを呼び出すFFI(Foreign function interface)のことです.
globals = PyDict.new()
locals = PyDict.new()
このコード以降を次々を打ち込んで,試してみてください!
ちなみに私の環境だと,下記のみうまく動きませんでした.環境設定の方法について工夫が必要そうでした.
P.S. Issue 書きました.