25 Jupyter (Python をAnaconda抜きでインストール)

身の回りに Python 関係の話が増えてきた。 個人的に常微分方程式関係がどうなっているか知りたくなったので (常微分方程式の数値シミュレーションの相場が変わったような気がしたので)、 久しぶりに調査する気になった。


以前 Python をやってみようと思い立って色々プログラムを書いたのは… あれ、以前の学科にいた時だっけ。調べたら9年も前だった (その後、Python 2→ Python 3 の移行を試したけれど、 そのときは以前のプログラムを動くように直せて満足して、 また眠ってしまった)。 うわっ、これは浦島太郎になっていても仕方がないか。


この前やったときは、Python 2 と Python 3 どちらにしようかとか迷ったけれど (3にしようかと思ったら、Fenics の方の事情で2にしたんだっけ。 よく覚えていない。)、 流石にもう Python 3 一択ですね。

Jupyter を使うのに Anaconda からやった方が良いかとも思ったけれど、 Anaconda の最新バージョンは 3.8 で、 それは M1 にネイティブに対応していないのか。 うーん。どうしよう。 別に機械学習しようというわけでないし…


Jupyter notebook のみインストールすることも可能だそうなので、 今回はまずは Anaconda なしでやってみよう。
sudo port install py-jupyter
色々メッセージが出て来る。メモっておく。
jupyter-3.9 notebook
無事に起動した。


ちなみに Julia の REPL で
using Pkg
Pkg.add("IJulia")
Pkg.add("PyPlot")
Pkg.update()
using PyPlot
としておいたら、Julia も Jupyter notebook で使えるようになった。

とある1台のMacでは、 using PyPlot をした後に、次のようなエラーが発生した。
julia> using PyPlot
INTEL MKL ERROR: dlopen(/Users/mk/.julia/conda/3/lib/libmkl_intel_thread.1.dylib, 9): Library not loaded: @rpath/libiomp5.dylib
  Referenced from: /Users/mk/.julia/conda/3/lib/libmkl_intel_thread.1.dylib
  Reason: image not found.
Intel MKL FATAL ERROR: Cannot load libmkl_intel_thread.1.dylib.
(MKL見た瞬間に面倒そうに思ったけれど…) よく分からないが https://qiita.com/ishigaki/items/c4b3838c763208e477fcに書いてあることに従い
% $HOME/.julia/conda/3/bin/conda install mkl==2019.4
としてから using PyPlot をやり直したら通った (なんかパスに conda 入っているのが気になるなあ…)。


sudo port select --set ipython py39-ipython
sudo port select --set ipython3 py39-ipython
sudo port select --set python python39
sudo port select --set python3 python39
sudo port select --set cython cython39
(idle は set できないのね…)

ちなみに port select python とすると、選択肢が表示される。
% port select python
Available versions for python:
	none (active)
	python27-apple
	python38
	python38-apple
	python39
%
(macOS には Python 2.7, 3.8 が用意されているのか。 python 3系列が入ったのはいつからなんだろう。)

この Mac には、 MacPorts の依存関係から、 いつの間にやら Python 3.8 とか Python 3.9 が入っていたわけだが、 Numpy, Scipy とかは入っていないみたい。もちろん使うわけだから、 そう指示しないと。
sudo port install py39-numpy
openblas がネイティブでないとか言われたので (PyPlot では MKL 使うけれど、OpenBLAS も使うわけか)
sudo port install openblas +native

続いて SciPy と Matplotlib.
sudo port install py39-scipy
sudo port install py39-matplotlib

  py39-matplotlib has the following notes:
    The default backend is the interactive Mac OS X backend. Different backends
    can be specified using the ~/.matplotlib/matplotlibrc file. More details
    regarding backends can be found in the matplotlib FAQ:
            https://matplotlib.org/tutorials/introductory/usage.html#backends

  tcl has the following notes:
    The Sqlite3 Tcl package is now being provided by the sqlite3-tcl port:
    sudo port install sqlite3-tcl

一応通って動いているみたい。


Jupyter メモ


まとめ (工事中)     Python を使えるようにするには色々なやり方があるわけだが、 自分のように MacPorts でやるには、例えば次のような手順。
sudo port -N install openblas +native
sudo port -N install py39-numpy +openblas
sudo port -N install py39-scipy +openblas
sudo port -N install py39-matplotlib
sudo port -N install py39-ipython
sudo port -N install py39-jupyter
sudo port -N install pandoc

sudo port select --set python python39
sudo port select --set python3 python39
sudo port select --set ipython py39-ipython
sudo port select --set ipython3 py39-ipython
sudo port select --set cython cython39
sudo port select --set pygments py39-pygments

(2021/12/26追記) [*]「Python 3.10が来た」に続く。



桂田 祐史