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
python3
1#!/usr/bin/env python 2# -*- coding: utf8 -*- 3# import sys 4import tkinter as tk 5import tkinter.filedialog 6import os 7import datetime 8import serial 9import re 10# import csv 11 12# オリジナルライブラリ 13import form_csv 14from makeheat import make_6heatmap 15 16root = tk.Tk() 17root.title(u"Aruduino control") 18# root.geometry("300x600+1000+10") 19 20 21# ser = serial.Serial('/dev/tty.usbmodem14201', 9600) 22# 23# ボタンが押されるとここが呼び出される 24# 25def from_aruduino(ser): 26 u"""Cap str from arduino.""" 27 log = '' 28 while True: 29 line = ser.readline() 30 # print(line.decode()) 31 log += line.decode() 32 pattern = r"> " 33 if re.match(pattern, line.decode()): 34 # print("match!!") 35 return log 36 37 38def to_arduino(ser, word): 39 u"""Transport to arduino with serial.""" 40 ser.write(bytes(word, 'utf-8')) 41 return from_aruduino(ser) 42・ 43・ 44・ 45長いので略 46・ 47・ 48・ 49
試したこと
コメントアウトでエラー箇所を絞るとmakeheat.pyのimportの時点でクラッシュしており、その原因としてmatplotlibとseabornの二つのモジュールでした。
この二つのモジュールはグラフを作るため不可欠であり、単体で動いたことからmain-gui.pyに何かしら問題があると思います。何かしら心当たりのある方はよろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/26 14:54