質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3202閲覧

python3.7でmatplotlibを使う

anrkommra

総合スコア7

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/08/08 00:57

編集2020/08/08 02:42

python3.7でmatplotlibを使う

python3.7.7でmatplotlibを使ってグラフの描画をしたい。
matplotlib.pyplotをimportするとエラーが発生する。
なぜエラーが出ているのでしょうか。エラーを解決するにはどうすればいいのでしょうか。

発生している問題・エラーメッセージ

>>> import matplotlib.pyplot as plt Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/aroma/.local/lib/python3.7/site-packages/matplotlib/pyplot.py", line 2282, in <module> switch_backend(rcParams["backend"]) File "/home/aroma/.local/lib/python3.7/site-packages/matplotlib/__init__.py", line 832, in __getitem__ plt.switch_backend(rcsetup._auto_backend_sentinel) File "/home/aroma/.local/lib/python3.7/site-packages/matplotlib/pyplot.py", line 213, in switch_backend switch_backend("agg") File "/home/aroma/.local/lib/python3.7/site-packages/matplotlib/pyplot.py", line 221, in switch_backend backend_mod = importlib.import_module(backend_name) File "/usr/lib/python3.7/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "/home/aroma/.local/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py", line 50, in <module> from PIL import Image File "/usr/lib/python3/dist-packages/PIL/Image.py", line 60, in <module> from . import _imaging as core ImportError: cannot import name '_imaging' from 'PIL' (/usr/lib/python3/dist-packages/PIL/__init__.py)

試したこと

Pillowのアップグレード
共用のマシンなのでPILのuninstallは権限により出来なかった。

補足情報(FW/ツールのバージョンなど)

ubuntu 18.04
matplotlib 3.2.1
Pillow 5.1.0
NVIDIA Corporation GK208B [GeForce GT 710]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2020/08/08 02:00

質問を書いてくださいね
horihoriwww

2020/08/10 13:26

import の部分がおかしいんでしょうね ソースコード見せていただけますか?
guest

回答1

0

ベストアンサー

質問が書いてないので説明だけ。

うしろから2つだけ読みます。

"/home/aroma/.local/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py" の50行目に
from PIL import Imageとあって、PIL.ImageImageという名前を束縛しようとします。
PIL.Image は PIL のサブモジュールかグローバル変数なはずですが、今回はサブモジュールなのでPIL.Imageというモジュールをロードしようとします。

/usr/lib/python3/dist-packages/PIL/Image.py をロードした時60行目にfrom . import _imaging as coreとあってPIL._imagingcoreという名前を束縛しようとしますが、そこでcannot import name '_imaging' from 'PIL'という名前でエラーになっています。
PIL._imagingは PIL のサブモジュールかグローバル変数なはずです。
まずサブモジュールだと考えてシェルで

shell

1ls /usr/lib/python3/dist-packages/PIL/_imaging*

としてファイルを探します。


もしないなら/usr/lib/python3/dist-packages/PIL/__init__.pyを読んでいくわけですが、実のところ正常にインポートできるマシンだと

python

1/usr/lib/python3/dist-packages/PIL/_imagingcms.cpython-36m-x86_64-linux-gnu.so 2/usr/lib/python3/dist-packages/PIL/_imaging.cpython-36m-x86_64-linux-gnu.so 3/usr/lib/python3/dist-packages/PIL/_imagingft.cpython-36m-x86_64-linux-gnu.so 4/usr/lib/python3/dist-packages/PIL/_imagingmath.cpython-36m-x86_64-linux-gnu.so 5/usr/lib/python3/dist-packages/PIL/_imagingmorph.cpython-36m-x86_64-linux-gnu.so 6/usr/lib/python3/dist-packages/PIL/_imagingtk.cpython-36m-x86_64-linux-gnu.so

が見つかります。

この2行目が今必要なファイルです。

PILをインポートした時そのファイルが/usr/lib/〜にあるので、pipでインストールしたものではなく、Ubuntuのパッケージ管理で入れたものだろうと判断できます。

shell

1apt install python3-pil

で入るファイルのはずです。

shell

1dpkg -l | grep python3-pil

して先頭がiかどうかでインストールされているか確認します。


追記

ファイルの存在が確認できたら、私なら、

shell

1ldd /usr/lib/python3/dist-packages/PIL/_imaging.cpython-36m-x86_64-linux-gnu.so

python

1import PIL._imaging 2print(PIL._imaging.__file__) 3print(PIL._imaging.__dict__)

を眺めますね。

管理者権限は要りますが

apt install python3-pil

をやり直すとか。

投稿2020/08/08 01:35

編集2020/08/08 02:14
quickquip

総合スコア11038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

anrkommra

2020/08/08 02:02

丁寧に説明していただきありがとうございます。 ls /usr/lib/python3/dist-packages/PIL/__imaging* と打つと、No match と出て、 /usr/lib/python3/dist-packages/PIL/_imaging.cpython-36m-x86_64-linux-gnu.so このファイルは存在しています。 ファイル構成は同じように見えるMac bookではimport出来るのですが、なぜ今回のマシンではエラーになるのでしょうか。エラーを解消するためにはどうすればいいのでしょうか。
quickquip

2020/08/08 02:09

すみません、そこはtypoでした。修正しておきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問