🙌

Juliaを使いたいのに、環境構築に失敗してブチ切れたからDockerで優勝した

2023/01/21に公開1

こんにちは、優勝しました。

背景

Juliaを使おうとしたら様々な環境構築時のトラブルに見舞われました。終わりです。

  • 使えるけどストレスなところ
    • グラフの描画が遅い
      • matplotlibと比較してしまう
    • PyPlotが使えない -> ローカルPCのpyenvのせい
      • Plotsを使うことにした
    • グラフを描画しても画像に焼いてブラウザから見るしかなかった
  • 困ったこと
    • pkgのインストールにたまに失敗する
    • すでに削除したはずのpkgが原因で実行時にエラーがこびりつく

これらは全部ローカル環境でJuliaを使おうとしているために起こる問題です。原因解決するのも時間かかるし、将来的なことを考えてDockerを使うことを決意しました。

Dockerの構成

全部Jupyter Labに投げる方針です。Jupyter公式のイメージを持ってくるだけで、Python、Julia、Rが使えるらしいです。

Dockerfileには、自分がほしいパッケージだけ追記しています。

Dockerfile
FROM jupyter/datascience-notebook

RUN julia -e 'using Pkg; Pkg.add("PackageCompiler")'
RUN julia -e 'using Pkg; Pkg.add(["Plots", "DataFrames", "CSV"])'
RUN julia -e 'using Pkg; Pkg.add(["Test", "StatsPlots", "Statistics"])'
RUN julia -e 'using Pkg; Pkg.add(["LaTeXStrings"])'
RUN julia -e 'using Pkg; Pkg.add(["FreqTables", "NamedArrays", "Distributions"])'

実行すると、ローカルホストのリンクが出力されるのでそのリンクを踏むとJupyter Labで開発できます。なんて便利なんだ。

run.sh
# ビルド時
docker image build --tag julia:01 .

# 実行時
docker run -p 8888:8888 \
           -v /hoge/path/:/work \
           -w /work \
           --user root \
           --rm \
           --name mynotebook \
           julia:01

使ってみてどうか

  • グラフの描画が速くなった
    • 初回は遅い?けど、2回目以降はPythonと同じくらいのパフォーマンスで素晴らしい
  • 環境を壊す心配がなくなった
    • 壊れたら作り直せばいいので

参考文献

Dockerでjupyter lab, python, juliaの環境構築 | あきとしのスクラップノート https://akitoshiblogsite.com/docker-jupyterlab-julia-python/

実践 Docker - ソフトウェアエンジニアの「Docker よくわからない」を終わりにする本 https://zenn.dev/suzuki_hoge/books/2022-03-docker-practice-8ae36c33424b59

Discussion

antimon2antimon2

もう遅いかもですが、
pyenv でインストールした Python を Julia(via PyCall)で使う方法(トラブルシューティング)は過去に記事にしてます。

Ubuntu + pyenv + PyCall.jl でエラー - Qiita

これで全て解決するかどうかの保証はできませんが、一応、参考まで。