LoginSignup
3
0

More than 1 year has passed since last update.

JupyterにPython以外のカーネルを導入する 《要Miniconda》

Last updated at Posted at 2022-02-02

Minicondaのパッケージ+αでさらに追加

下記の記事でCloud ShellにMinicondaを導入しているものとして進めます。

基本的に実行ファイルがホームディレクトリ直下のminiconda3/binに配備されるため、環境変数PATHへ追加しておかなければ、カーネル個別にフルパスでの設定が必要となります。それ以外のJupyter Labの起動パターンを例示しておきます。

  • Miniconda環境に移行してからの作業
$ source ~/miniconda3/bin/activate

(base) $ jupyter lab &
  • 一時的にMiniconda環境をPATHに追加して起動
$ PATH=${HOME}/miniconda3/bin:${PATH} jupyter lab &
  • システム起動時にPATHに自動追加
.bash_login
$ export PATH=${HOME}/miniconda3/bin:${PATH}

上記のうちのどれか、運用方法に適したものを選択して構いません。

まずは手軽で易しいLuaにとりかかる

それほど時間もかからないので、最初はLuaにします。
はじめにMinicondaのパッケージを利用しLua本体のインストール。

$ ~/miniconda3/bin/conda install -c conda-forge lua

JupyterカーネルはPythonで実装されていますので、pipでiLua(パッケージ名ilua)を導入。

$ ~/miniconda3/bin/pip install ilua

image.png

image.png

以上でJupyterへのインストールも完了。特に問題無く出来るはずです。
kernel.json~/miniconda3/share/jupyter/kernels/luaに配備されることが今までと違うぐらいです。

次はもう少し手間のかかるErlangとElixirを

Erlangを使うのであれば、Erlang VM(BEAM)で動作するElixirもインストールしたほうが絶対に良いです。
MinicondaパッケージでElixirをインストールすれば、依存しているErlangも同時に入ります。

$ ~/miniconda3/bin/conda install -c conda-forge elixir

カーネルはGitHubからErlang、Elixir両対応のインストーラーをダウンロードします。とりあえずホームディレクトリ直下の.local/binに設置することにします。

$ curl -L https://github.com/filmor/ierl/releases/download/v0.6.0/ierl --create-dirs -o ~/.local/bin/ierl

実行ファイルのパーミッションを変更してインストールを実施。ここでも--userオプションがポイント。

$ chmod +x ~/.local/bin/ierl
$ PATH=${HOME}/miniconda3/bin:${PATH} ~/.local/bin/ierl install erlang --user 
$ PATH=${HOME}/miniconda3/bin:${PATH} ~/.local/bin/ierl install elixir --user 

image.png

image.png
image.png

Juliaは処理系を一括ダウンロード

MinicondaのパッケージでもJuliaは導入できますが、どうもカーネルをインストールして実行したところ、署名に関するエラーとなり、異常終了してしまいます。

ここは公式サイトからオールインワンの圧縮ファイルを入手してランタイムを導入し、IJuliaパッケージをインストールします。

ひとまずホームディレクトリ直下に圧縮ファイルを展開すれば、Julia自体はすぐに利用可能となります。

$ curl -L https://julialang-s3.julialang.org/bin/linux/x64/1.7/julia-1.7.1-linux-x86_64.tar.gz | tar xzv

$ ~/julia-1.7.1/bin/julia
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.7.1 (2021-12-22)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia> 

JuliaのREPLのプロンプトが表示されている状態で単に]キーを押下すればパッケージモードのプロンプトに変わります。

その状態でaddコマンドでIJuliaパッケージを追加してstatusコマンドで追加されていることが確認できます。後はバックスペース押下でREPLに戻りますが、単にctrl + D押下で終了してよいでしょう。

(@v1.7) pkg> add IJulia

(@v1.7) pkg> status
      Status `~/.julia/environments/v1.7/Project.toml`
  [7073ff75] IJulia v1.23.2

image.png

image.png

専用インストーラーによりScalaを導入

ScalaもMinicondaのパッケージで導入できますが、カーネルalmondのインストールには、coursierというパッケージマネージャを使用します。

coursierをセットアップする段階でScalaもインストールされますし、またMinicondaと違いScala3も導入できる(カーネルは不可)ので、こちらだけで済ませます。

今回はcoursierを~/.local/binにダウンロードします。

$ curl -L https://git.io/coursier-cli --create-dirs -o ~/.local/bin/coursier

次にパーミッションを変更してからセットアップします。どうもalmondにはバージョンを指定しないと失敗するようでした。

$ chmod +x ~/.local/bin/coursier

$ ~/.local/bin/coursier launch --fork almond:0.10.9 -- --install

注意点としては、パッケージ本体は~/.cache/coursierディレクトリに配備されるらしく、一時ファイルだと思って削除してしまうと動作しません。
image.png

image.png

最後は時間がかかるRustにチャレンジ

$ curl https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init --create-dirs -o ~/.local/bin/rustup-init

$ chmod +x ~/.local/bin/rustup-init

とりあえずは最小構成でRustをインストールして、EvCxR Jupyter Kernelカーネル(
cargoパッケージ名evcxr_jupyter)をインストールしました。

$ ~/.local/bin/rustup-init -y --no-modify-path --profile minimal

$ ~/.cargo/bin/cargo install evcxr_jupyter

$ ~/.cargo/bin/evcxr_jupyter --install

パッケージのインスト―ル進行中は、コンパイルにかなり時間がかかるので、いったんその場を離れてもよいかもしれません。

Jupyterへのインストール完了後、RustのランタイムをPATHを通していない場合はkernel.jsonファイルに修正が必要になります。

kernel.json
{
  "argv": [
    "~/.cargo/bin/evcxr_jupyter",
    "--control_file",
    "{connection_file}"
  ],
  "env": {
    "PATH": "${HOME}/.cargo/bin:${PATH}"
  },
  "display_name": "Rust",
  "language": "rust",
  "interrupt_mode": "message"
}

envプロパティを追加しました。
image.png

image.png

まとめ

Minicondaのパッケージは導入、管理が容易に出来る反面、構成が完全ではなく、限定的な利用で妥協することになりがちのようです。

また、一つの言語に対して、カーネルが複数の種類が提供されているものもあり、今後は目的によって使い分けするのが一般的になるのかもしれないと思います。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0