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

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

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

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

Q&A

解決済

3回答

3633閲覧

[続]matplotlib関連のエラーTkinterの対応策がわからない。

Tatsuo_Iriyama

総合スコア50

Python

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

0グッド

0クリップ

投稿2018/10/15 05:40

##現状

現在CentOS7.2, Python2.7で機械学習をしています。
ヒストグラムを使用して可視化しようとしています。

スクリプトを実行しようとした際に

[vagrant@local sample]$ python dogs.py Traceback (most recent call last): File "dogs.py", line 4, in <module> import matplotlib.pyplot as plt File "/usr/lib64/python2.7/site-packages/matplotlib/pyplot.py", line 115, in <module> _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup() File "/usr/lib64/python2.7/site-packages/matplotlib/backends/__init__.py", line 62, in pylab_setup [backend_name], 0) File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_tkagg.py", line 4, in <module> from . import tkagg # Paint image to Tk photo blitter extension. File "/usr/lib64/python2.7/site-packages/matplotlib/backends/tkagg.py", line 5, in <module> from six.moves import tkinter as Tk File "/usr/lib/python2.7/site-packages/six.py", line 203, in load_module mod = mod._resolve() File "/usr/lib/python2.7/site-packages/six.py", line 115, in _resolve return _import_module(self.mod) File "/usr/lib/python2.7/site-packages/six.py", line 82, in _import_module __import__(name) ImportError: No module named Tkinter

このようなエラーが発生しました。

エラー内容からTkinterというモジュールが無いという事はわかっているので、installすればいいと思うのですが、色々調べてもピンとくる結果が出てきませんでした。

##疑問点

  1. Tkinterというモジュールをinstallすれば解決する問題なのか
  2. だとしたらそのコマンドを教えて頂きたい
  3. 違う場合、適切な対応策を教えて頂きたい

この3点になります。
1の疑問点から2または3にいくと思います。

どうぞよろしくお願い致します。

足らない点ありましたら、修正依頼等で質問お願い致します。
即時対応致します。

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

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

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

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

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

guest

回答3

0

選択肢は何通りかあります。

matplotlibをどのように使いたいのかによって、選ぶべきものが変わってくると思います。

  1. plt.show()するとウィンドウが開いてグラフが描画されるようにしたい

X11 ForwardingでTkinterのウィンドウを動かす。

  1. plt.savefig()で画像ファイルが吐ければ良い

下記リンクを参考にしてください。
サーバサイドにおけるmatplotlibによる作図Tips
2. Webから使う
Webのポートフォワーディングを設定し、JupyterかWebAggを使ってWebサーバとして動かし、ホストのブラウザからつなぐ。

とりあえず動作確認したいなら2番で、これは労力を要さないと思います。

投稿2018/10/15 07:12

hayataka2049

総合スコア30933

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

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

Tatsuo_Iriyama

2018/10/15 07:45 編集

回答ありがとうございます。 @magichanからのご意見なのですが、機械学習を中心にやるのであれば、3で良いのではないかとのことでした。 現段階でmatplotlibを使用する意図としては、機械学習の勉強過程で使用する、という意図になります。 勉強過程以降をイメージした場合、どれが適切か、というのはあるのでしょうか? 勉強過程含め、これに関しては個人差があると思われますので、一概にこれが良い、とは言い切れないのかなと思われます。 @hayataka2049さんの主観で良いので、意見頂ければと思います。
hayataka2049

2018/10/15 07:52 編集

そういう目的なら、まあ、jupyter notebook上で動かしてホストのブラウザから見れば良いような気がします jupyter vagrant等で検索して出てきたページを幾つか貼ります。だいたいこんな感じですかね(細かい設定とかコマンドは違ってくると思うので、調べながら・確認しながら行ってください) https://qiita.com/Esfahan/items/bbb2e9d593faa8b45861 https://qiita.com/mt08/items/24a06cbb36ec2cc6b683
Tatsuo_Iriyama

2018/10/15 08:26

ありがとうございます、助かります!
guest

0

ベストアンサー

CentOS72であれば

yum install tkinter

でよろしいのではないでしょうか

投稿2018/10/15 05:50

magichan

総合スコア15898

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

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

Tatsuo_Iriyama

2018/10/15 06:04

回答ありがとうございます。 上記コマンド実行後tkinterはインストール出来ました。 ありがとうございます。
magichan

2018/10/15 06:06

それで、matplotlibが動作しませんか?
Tatsuo_Iriyama

2018/10/15 06:09 編集

はい。 再度スクリプトを実行したら Traceback (most recent call last): File "/usr/lib64/python2.7/runpy.py", line 162, in _run_module_as_main "__main__", fname, loader, pkg_name) File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code exec code in run_globals File "/usr/lib64/python2.7/lib-tk/Tkinter.py", line 3795, in <module> _test() File "/usr/lib64/python2.7/lib-tk/Tkinter.py", line 3770, in _test root = Tk() File "/usr/lib64/python2.7/lib-tk/Tkinter.py", line 1745, in __init__ self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) _tkinter.TclError: no display name and no $DISPLAY environment variable このようなエラーが新たに発生しまして、詰まっております。
magichan

2018/10/15 06:23

もしかして、GUI環境がインストールされていない環境なのですか?
Tatsuo_Iriyama

2018/10/15 06:39 編集

知識が無く申し訳ないのですが、そもそもの話でGUI環境を整える必要性を把握していません。 ですので、現状GUI環境が整っているか、すらわかりませんし、GUI環境を整える為に何かしらする必要があるのであれば、手付かずですので、整っていないと思われます。 この場合、私がやるべき事はなんなのでしょうか?
magichan

2018/10/15 07:35 編集

YouheiSakuraiさんとのやり取りを見てやっと理解しました。 Vagrantにて環境を構築しているのですね。 とりあえず、hayataka2049さんが回等で書かれておりますとおりグラフを画面に表示したいのか・画像への保存だけでよいのかで環境構築で行うべきことが大きく異なりますので、その辺りを決める必要があるかとおもいます。 個人的には、「機械学習」を中心で行うのであれば(3)でよいのではと思います。 あと母艦側のOSは何になりますでしょうか?
Tatsuo_Iriyama

2018/10/15 07:38

すみません、ありがとうございます。 確かにPythonでは機械学習を中心に行うのですが、いずれはWebアプリケーションの開発もしたいと考えています。 その場合、3を選択後問題となる事があるとすれば、どういった事なのでしょうか? 抽象的な質問ですいません。 母艦側というのは、ホストOSのことでしょうか? ホストOSは、mac OSになります。
magichan

2018/10/15 08:14

ザックリと説明すると、Tatsuo96さんの現在の環境(CentOS)は CUI環境のみしか持っていないので、ターミナルを通してテキストベースのアプリは動作させることができるのですが、GUIベースのアプリを動作させることができません。その為 matplotlibが図表を出力することが出来ずにエラーがでております。 これを解決する方法としてのhayataka2049さんの提案は 1.頑張ってGUI環境を構築する 2.CUI環境のまま頑張る(図の表示はあきらめ、ファイル保存のみを使用) 3.Webベース(ブラウザを使用して図を表示する)にて行う となります。 で、Webアプリの開発ですが、これはもともと3と同様にブラウザを使って表示をおこなうアプリケーションですのでとくに制限となることは無いかとおもいます。
Tatsuo_Iriyama

2018/10/15 08:25

非常にわかりやすい説明、ありがとうございます! そういうことであれば、hayataka2049さんの提案のうち3を選択しようと思います。 長々とありがとうございました!
guest

0

  1. Noです。

以下のコマンドを実行してWindowが表示されるか確認する。

python -m Tkinter

No module named Tkinterエラーが出る -> 使用しているPythonの問題。どうやってそのPythonをインストールしたのか整理して明示してください。

その他の状況 -> どんな状況か、エラー等を明示してください。

投稿2018/10/15 05:54

YouheiSakurai

総合スコア6142

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

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

Tatsuo_Iriyama

2018/10/15 06:02

回答ありがとうございます。 まず1点目python -m Tkinterのコマンドを実行しましたら、Windowは開く事なく、 Traceback (most recent call last): File "/usr/lib64/python2.7/runpy.py", line 162, in _run_module_as_main "__main__", fname, loader, pkg_name) File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code exec code in run_globals File "/usr/lib64/python2.7/lib-tk/Tkinter.py", line 3795, in <module> _test() File "/usr/lib64/python2.7/lib-tk/Tkinter.py", line 3770, in _test root = Tk() File "/usr/lib64/python2.7/lib-tk/Tkinter.py", line 1745, in __init__ self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) _tkinter.TclError: no display name and no $DISPLAY environment variable 上記のエラーが表示されました。 2点目、どうやってPythonをインストールしたか、 https://qiita.com/192_60_33_2/items/73df25e2dd64217165ae こちらの記事を参考に構築致しました。 ですので、どうやってインストールしたか、という問いの答えはyumでインストールした、が回答になるのでしょうか? 3点目、その他の状況 エラーログは[現状]に記載した通りで、Tkinterインストール時のエラーは、1点目に記載しました。 よろしくお願い致します。
YouheiSakurai

2018/10/15 06:22

まず「python -m Tkinter」の成功を目指すと良いと思います。「vagrant X11」でXサーバをどこにどうやって立ち上げるか調べると良いと思います。Xサーバを用意して$DISPLAY環境変数を適切に設定してからであれば、「python -m Tkinter」は成功します。
Tatsuo_Iriyama

2018/10/15 06:38

なるほど。色々と不足している部分があるようですね。 1つずつ調べて解決していこうと思います。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問