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

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

ただいまの
回答率

88.58%

matplotlibとseabornの原因不明のクラッシュ

受付中

回答 1

投稿

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

1000nen

score 10

 matplotlib,seabornをクラッシュせずimportしたい

python3でarduinoと通信してセンサーデータを収集するプログラムを作っています。
そこで収集したデータの確認のためseabornのヒートマップを作るモジュールを作成しました。モジュール単体では無事に動きましたが、メインのGUIプログラムにimportしたところ以下のようなエラーが出ました。
環境はOS MAC10.14.1
python            3.7.0
numpy             1.15.4
pandas            0.23.4 
matplotlib        3.0.2
seaborn           0.9.0 

 エラーメッセージ

❯ python3 main-gui.py
2018-11-23 22:49:25.108 Python[24511:2411757] -[NSApplication _setup:]: unrecognized selector sent to instance 0x7ff05ea8dcf0
2018-11-23 22:49:25.110 Python[24511:2411757] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSApplication _setup:]: unrecognized selector sent to instance 0x7ff05ea8dcf0'
*** First throw call stack:
(
    0   CoreFoundation                      0x00007fff2dc1fe65 __exceptionPreprocess + 256
    1   libobjc.A.dylib                     0x00007fff59c7b720 objc_exception_throw + 48
    2   CoreFoundation                      0x00007fff2dc9d22d -[NSObject(NSObject) __retain_OA] + 0
    3   CoreFoundation                      0x00007fff2dbc1820 ___forwarding___ + 1486
    4   CoreFoundation                      0x00007fff2dbc11c8 _CF_forwarding_prep_0 + 120
    5   libtk8.6.dylib                      0x0000000107dbf1f2 TkpInit + 408
    6   libtk8.6.dylib                      0x0000000107d2eaac Initialize + 2454
    7   _tkinter.cpython-37m-darwin.so      0x0000000107b90dc4 Tcl_AppInit + 84
    8   _tkinter.cpython-37m-darwin.so      0x0000000107b90a98 _tkinter_create + 1144
    9   Python                              0x000000010750584e _PyMethodDef_RawFastCallKeywords + 430
    10  Python                              0x0000000107504dba _PyCFunction_FastCallKeywords + 42
    11  Python                              0x00000001075c45ae call_function + 782
    12  Python                              0x00000001075c1560 _PyEval_EvalFrameDefault + 25152
    13  Python                              0x00000001075c5096 _PyEval_EvalCodeWithName + 2422
    14  Python                              0x000000010750495b _PyFunction_FastCallDict + 523
    15  Python                              0x0000000107505c2f _PyObject_Call_Prepend + 143
    16  Python                              0x00000001075540f1 slot_tp_init + 145
    17  Python                              0x000000010754fa69 type_call + 297
    18  Python                              0x0000000107504bd1 _PyObject_FastCallKeywords + 433
    19  Python                              0x00000001075c4492 call_function + 498
    20  Python                              0x00000001075c1560 _PyEval_EvalFrameDefault + 25152
    21  Python                              0x00000001075c5096 _PyEval_EvalCodeWithName + 2422
    22  Python                              0x00000001075bb244 PyEval_EvalCode + 100
    23  Python                              0x00000001075f8041 PyRun_FileExFlags + 209
    24  Python                              0x00000001075f78eb PyRun_SimpleFileExFlags + 859
    25  Python                              0x000000010761593c pymain_main + 8044
    26  Python                              0x0000000107615da1 _Py_UnixMain + 129
    27  libdyld.dylib                       0x00007fff5ad4a08d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
[1]    24511 abort      python3 main-gui.py

 main-gui.py

#!/usr/bin/env python
# -*- coding: utf8 -*-
# import sys
import tkinter as tk
import tkinter.filedialog
import os
import datetime
import serial
import re
# import csv

# オリジナルライブラリ
import form_csv
from makeheat import make_6heatmap

root = tk.Tk()
root.title(u"Aruduino control")
# root.geometry("300x600+1000+10")


# ser = serial.Serial('/dev/tty.usbmodem14201', 9600)
#
# ボタンが押されるとここが呼び出される
#
def from_aruduino(ser):
    u"""Cap str from arduino."""
    log = ''
    while True:
        line = ser.readline()
        # print(line.decode())
        log += line.decode()
        pattern = r"> "
        if re.match(pattern, line.decode()):
            # print("match!!")
            return log


def to_arduino(ser, word):
    u"""Transport to arduino with serial."""
    ser.write(bytes(word, 'utf-8'))
    return from_aruduino(ser)
・
・
・
長いので略
・
・
・

 試したこと

コメントアウトでエラー箇所を絞るとmakeheat.pyのimportの時点でクラッシュしており、その原因としてmatplotlibとseabornの二つのモジュールでした。
この二つのモジュールはグラフを作るため不可欠であり、単体で動いたことからmain-gui.pyに何かしら問題があると思います。何かしら心当たりのある方はよろしくお願いします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

0

mac+tkinter環境特有の問題にハマったのかもしれません。その場合、環境の再構築が必要になる可能性があります。

Python - Pythonでtkinterに関数を用いたときのエラー|teratail
python - NSException with Tkinter on mac - Stack Overflow

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/11/26 23:54

    情報ありがとうございます。ご指摘の通りMAC上で動作しなかったプログラムでしたが確かにwindowsでは動作いたしました。
    下のリンク中にあるpython公式の情報を見てみましたがTkに不具合があり推奨しないなどの記述があるのは8.5.7などで自分の環境の8.6には特に記述がなかったと思います。
    上のリンクでは環境を再構築することで不具合が解消したとのことなので自分も試してみたいと思います。

    キャンセル

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

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

関連した質問

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