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

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

ただいまの
回答率

90.37%

  • Python

    12882questions

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

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

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 671

Tatsuo_Iriyama

score 42

現状

現在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にいくと思います。

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+3

CentOS72であれば

yum install tkinter


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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/15 16:38

    すみません、ありがとうございます。

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

    母艦側というのは、ホストOSのことでしょうか?
    ホストOSは、mac OSになります。

    キャンセル

  • 2018/10/15 17:14

    ザックリと説明すると、Tatsuo96さんの現在の環境(CentOS)は CUI環境のみしか持っていないので、ターミナルを通してテキストベースのアプリは動作させることができるのですが、GUIベースのアプリを動作させることができません。その為 matplotlibが図表を出力することが出来ずにエラーがでております。

    これを解決する方法としてのhayataka2049さんの提案は

    1.頑張ってGUI環境を構築する
    2.CUI環境のまま頑張る(図の表示はあきらめ、ファイル保存のみを使用)
    3.Webベース(ブラウザを使用して図を表示する)にて行う

    となります。
    で、Webアプリの開発ですが、これはもともと3と同様にブラウザを使って表示をおこなうアプリケーションですのでとくに制限となることは無いかとおもいます。

    キャンセル

  • 2018/10/15 17:25

    非常にわかりやすい説明、ありがとうございます!

    そういうことであれば、hayataka2049さんの提案のうち3を選択しようと思います。
    長々とありがとうございました!

    キャンセル

+3

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

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

  1. plt.show()するとウィンドウが開いてグラフが描画されるようにしたい
    X11 ForwardingでTkinterのウィンドウを動かす。
  2. plt.savefig()で画像ファイルが吐ければ良い
    下記リンクを参考にしてください。
    サーバサイドにおけるmatplotlibによる作図Tips
  3. Webから使う
    Webのポートフォワーディングを設定し、JupyterかWebAggを使ってWebサーバとして動かし、ホストのブラウザからつなぐ。

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/15 16:45 編集

    回答ありがとうございます。

    @magichanからのご意見なのですが、機械学習を中心にやるのであれば、3で良いのではないかとのことでした。

    現段階でmatplotlibを使用する意図としては、機械学習の勉強過程で使用する、という意図になります。

    勉強過程以降をイメージした場合、どれが適切か、というのはあるのでしょうか?

    勉強過程含め、これに関しては個人差があると思われますので、一概にこれが良い、とは言い切れないのかなと思われます。
    @hayataka2049さんの主観で良いので、意見頂ければと思います。

    キャンセル

  • 2018/10/15 16:50 編集

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

    キャンセル

  • 2018/10/15 17:26

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

    キャンセル

+2

  1. Noです。

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

python -m Tkinter

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/15 15: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点目に記載しました。


    よろしくお願い致します。

    キャンセル

  • 2018/10/15 15:22

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

    キャンセル

  • 2018/10/15 15:38

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

    キャンセル

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

  • ただいまの回答率 90.37%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Python

    12882questions

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