🙌
Juliaを使いたいのに、環境構築に失敗してブチ切れたからDockerで優勝した
こんにちは、優勝しました。
背景
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
もう遅いかもですが、
pyenv でインストールした Python を Julia(via PyCall)で使う方法(トラブルシューティング)は過去に記事にしてます。
↓
Ubuntu + pyenv + PyCall.jl でエラー - Qiita
これで全て解決するかどうかの保証はできませんが、一応、参考まで。