前の関連記事:linuxBean14.04(83)LibreOfiice5.0.2のインストール
職場で使っているPentium4のノートパソコンでlinuxBean14.04(72)Anacondaで科学技術系Pythonパッケージを一括インストールするでインストールしたAnaconda3 2.3.0 をconda upgrade --allでアップグレードするとmatplotlibのプロットが出力できなくなりました。
numpy1.9.3でインストールされるlibgfortran1.0-0が原因だった
職場で使っているPentium4のマシンでAnaconda3 2.3.0 をconda upgrade --allでアップグレードしたところJupyter NotebookのセルをRunするとThe kernel has died, and the automatic restart has failed.と表示されて実行できませんでした
import matplotlib.pyplot as plt import numpy as np data = np.outer(range(10), range(1, 5)) fig, ax = plt.subplots() lines = ax.plot(data) ax.set_title('Click somewhere on a line') plt.show()
実行したのはjoferkington/mpldatacursorを改変したこのコードです。
PyCharmで実行してもProcess finished with exit code 132とでてきてプロットが表示されません。
PyCharmでprint(data)を3行目のあとに追加するとnumpyの実行結果は出力されたのでnumpyは動いておりmatplotlibが動いていないようです。
~/anaconda3フォルダを破棄してもう一度Anaconda3をインストールしてIPython Notebookで実行すると問題なくプロットが出力されました。
PyCharmからも同様に問題なくプロットが出力されました。
原因を追求するためにまずconda upgrade numpyとするとnumpyが1.9.2から1.10.0にアップグレードされました。
するとPyCharmでまたProcess finished with exit code 132となりました。
numpyが1.9.2からnumpy1.10.0にアップグレードしたのが原因かと思ってconda install numpy=1.9としてnumpyを1.9.3にダウングレードしました。
しかし解決しません。
そこでまた~/anaconda3フォルダを破棄してまたAnaconda3を再インストールしました。
conda upgrade numpy=1.9.3
今度はnumpyを1.9.2から1.9.3にアップグレードしました。
またProcess finished with exit code 132がでてくるようになりました。
conda install numpy=1.9.2でnumpyを1.9.3から1.9.2にダウングレードしました。
これで最初の状態に戻って解決すると思ったのですが解決しません。
そこでnumpyを1.9.3にアップグレードした時に新たにインストールされたlibgfortran 1.0-0をアンインストールしました。
conda remove libgfortran
するとちゃんとPyCharmでプロットが出力されるようになりました。
これで原因はnumpyを1.9.3にアップグレードするときに新たにインストールされるlibgfortranパッケージとわかりました。
libfortranをインストールするだけでmatplotlibのプロットが出てこなくなるので、numpyはもちろんnumpyを必要とするpandasもmatplotlibもアップグレードできません。
Jupyter Notebookのみインストールすると問題なし
Jupyter Notebookのセルがカーネルが死んでいるエラーが出て実行できなかったのもインストールしたパッケージ(今回はmatplotlib)にエラーが出ていたのが原因のようです。
conda install Jupyter
これでJupyterのみインストールするとJupyter Notebookのセルでmatplotlibのプロットが出力できるようになりました。
condaは不要なパッケージはアンイストールはしてくれないようなので、アップグレードしてからダウングレードしても問題は解決しませんでした。
~/anaconda3フォルダを破棄してまたAnaconda3を再インストールして、必要なパッケージのみアップグレードする必要があります。
libgfortranのインストールで問題が起こるのはCPUが古いせい?
Core i5のVirtualBoxのゲストのlinuxBean14.04のAnacondaではconda upgrade --allとして上記の問題は起こっていません。
libgfortranをインストールすると問題が起きるのはCPUがPentium4と古いもののせいのような気がしますが根拠は見つけていません。
とりあえず職場で稼働しているシステムの更新に伴って破棄される予定だったcore2のマシンを来週から2台もらえるようになったので今後はPentium4のマシンは使わなくて済みそうです。
参考にしたサイト
Exit Codes With Special Meanings
Bashのexit codes。Pythonのexit codesの解説は見つけられませんでした。
joferkington/mpldatacursor · GitHub
matplotlibのプロットでツールチップが使えるようになります。
0 件のコメント:
コメントを投稿