以下の内容はhttps://rikei-tawamure.com/entry/2020/08/16/194452より取得しました。


JuliaをJupyterLabで始める

アイキャッチ画像

はじめに

今回はJuliaをインストールしてJupyteLabで使う方法についてまとめました。

前から昨今話題になっているJuliaが気になっていました。

Pythonの様に記述しやすくて

Cの様に早い

という触れ込みです。

新しい言語覚えるのはそれなりに大変だし

既習の言語と混乱しそうなので躊躇していましたが

Twitterで紹介されていた書籍をポッチとして購入しました。

これをきっかけにして

PCに環境を整え使い始めるまでの大体のことができたので

まとめておこうと思います。

インストール

各種OSへのインストールの概要

コンパイル済みのバイナリバージョンが各種OSにあります。

それらを用いた、Juliaの各種環境へのインストールについては

以下のページにまとめられています。

julialang.org

Windowsはインストーラがあります。

MacOSはおなじみのdmgファイルをクリックして

出てきたダイアログでおなじみの作法である

アプリケーションフォルダにアプリをドラッグアンドドロップします。

このままだとターミナル等では実行できませんので

以下の様にして

各種コマンド置かれていてパスが通っているディレクトリに

シンボリックリンクを作ります

ln -s /Applications/Julia-1.0.app/Contents/Resources/julia/bin/julia /usr/local/bin/julia

この際、自分のインストールしたJuliaのバージョン(上の例では1.0)の確認が必要です。

Ubuntu 20.04では

sudo apt install julia

でインストール完了です。

Juliaの実行

ターミナルやコマンドプロンプトで

julia

Juliaのインタラクティブシェルが開きます。

Juliaのインタラクティブシェルは

REPLというらしく、少し試しためしてみました。

REPLの窓
REPLの窓

インタラクティブシェルがあるのはPythonと同じですね。

JupyterLabで使用できるようにする

PythonはJupyterLabで使っているので

Juliaもできると聞き早速使える様にしてみます。

REPLで ] を押すとパッケージインストールモードに移行する様です。

ここで

add IJulia

とすると

なにやらインストールが始まり、

JupyterLabで使える様になります。

"JupyterLabで使用可能にする"
JupyterLab

JupyterLabのランチャー画面にもJuliaが追加されているのが分かります。

JupyterLabランチャー画面
JupyterLabランチャー画面

簡単なテスト

使用方法はPythonで使用する時と同じで「+」ボタンをおして新規作成します。

JupyterLabの新規作成
JupyterLabの新規作成

基本的な

  • 四則演算
  • 変数
  • 複素数の演算
  • while ループ
  • if文

等を試してみました。

また、Juliaでは下図の様に標準で行列の計算もできる様です。

行列の基本的計算
行列の基本的計算

Pythonのモジュールを使う

PyCallのインストール

以下はMacでのみ試しています。Linux系は同じだと思われます。

シェルで

env PYTHON=$(which python) julia -q

とするとREPLが起動します。

REPL上で

ENV["PYTHON"]

としたあと

] を押して、パッケージインストールモードに入ります。

そして、以下のコマンドを実行します。

add PyCall

PyCallの使い方

numpyを例にしてみます。 つぎのようにして使います。

using PyCall

np=pyimport("numpy")

x=np.arrange(0, 1, 1000)
y=x.^2

上記は0から1までを1000分割した値をxにいれその2乗をyに入れます。

Pythonのmatplotlibを使う

Juliaで使い慣れたmatplotlibを使ってグラフを描くこともできます。

ただし前述のPyCallでmatplotlibを呼び出すと、Jupyterでは別窓が開いてしまいました。

さらにそのグラフの窓が閉じられなくなるので、うまく使えませんでした。

そこで

Juliaでmatplotlibを使うには

PyPlotを使います。

インストールはJuliaのREPLで ] を押して

add PyPlot

で終了です。

PyPlotの使い方

前述のPyCallでnumpyを使った例を示しましたが

それと合わせてみます。

using PyCall
using PyPlot

np=pyimport("numpy")

x=np.arrange(0, 1, 1000)
y=x.^2

plot(x, y)
show()

matplotlibを使ってグラフを描画
matplotlibを使ってグラフを描画

PyCallの使用でエラーが出た場合

MacOSでpyenvでpython環境を整えていた場合にかなりの確率で PyCallが使えません。

これはpyenvでインストールしたpythonが静的ライブラリしかリンクできず

動的ライブラリを使うPyCallに対応していないためです。

この場合はまずpythonをアンインストールするしかないのですが

今使っている環境に戻すために、今使っているモジュールのリストを

吐き出してファイルall_module.txtに留めておきます。

pip freeze > all_module.txt

その後、アンインストールします

pyenv uninstall 3.7.2

3.7.2の部分はご自分のバージョンです。

これでいったん削除されたので

再インストールです。

今度はダイナミックライブラリをリンクできる様に

次の様にコマンドを入力します。

CONFIGURE_OPTS="--enable-shared" pyenv install 3.7.2

続いてパッケージ管理のpipを最新版にします。

pip install -U pip

そのあと,元のモジュールを再びインストールします。

pip install -r all_module.txt

この後はPyCallを前述した通りインストールします。

しかし、これでもまだうまくいきません。

私の環境では

以下のパスにdeps.jlというファイルがあります。

~/.julia/packages/PyCall/zqDXB/deps/

このファイルの中のPYTHONHOME=の行を

PYTHONHOME=""

に変更して保存します。

以上で対策が終了します。

これにはかなりはまりました。

私はこのあと、tqdmが使えなくなりましたので

念のため、以前のJupyterLabのインストールを参考にして

JupyterLabのインストールも再度やっておいた方が良いです。

blog.rikei-tawamure.com

おわりに

今日からJuliaはじめました。

Pythonより早いというところに期待して

Pythonで重い処理があれば移植してみたいと思います。

この記事も最初の取り掛かりのまとめ記事として

短時間に仕上げるつもりでしたが

PyCallでつまづいてしまい、思ったよりも

すごく、時間がかかりました。

初めてのことは、そう簡単じゃないですね。

参考文献

Juliaのことがよくまとめられていて買ってよかったです。

以下はpyenvで環境を整えていた場合、PyCallで必ずうまくいかないので参考になります。

MacでPyCallにはまった場合の記事です。

qiita.com

さらに、こちらを参考にしてようやく問題が解決しました。

qiita.com




以上の内容はhttps://rikei-tawamure.com/entry/2020/08/16/194452より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14