2017-10-10 11 views
0

프로젝트의 경우 가변 데이터 소스에서 DICOM 파일을 가져와야합니다. 필자는 PyCharm 프로젝트를 진행 중이며, 코드를 반복하여 최종 제품이 프로그램이 될 것입니다. 내가 오류는 다음Jupyter Notebook을 사용할 때 발생하지 않는 PyCharm을 사용하여 모듈을 가져올 때 오류가 발생했습니다


2017년 10월 10일 08 : 58 : 16.307 파이썬 [1010 : 26876은] - [NSApplication의 _setup는 :] : 인식 할 수없는 선택기 인스턴스에 전송 0x105154320

2017- 10-10 08 : 58 : 16.311 파이썬 [1010 : 26876]는 *** 인해 캐치되지 않는 예외 'NSInvalidArgumentException'응용 프로그램 종료, 이유는 : - **

을 '[NSApplication는 _setup :] 알 수없는 선택기 예를 0x105154320로 전송' * 첫 번째 호출 스택 호출 :

(

0 CoreFoundation      0x00007fff9e92757b __exceptionPreprocess + 171 
1 libobjc.A.dylib      0x00007fffb3b801da objc_exception_throw + 48 
2 CoreFoundation      0x00007fff9e9a7f14 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132 
3 CoreFoundation      0x00007fff9e89ac93 ___forwarding___ + 1059 
4 CoreFoundation      0x00007fff9e89a7e8 _CF_forwarding_prep_0 + 120 
5 Tk         0x000000010438cc02 TkpInit + 471 
6 Tk         0x00000001043082a9 Tk_Init + 1794 
7 _tkinter.cpython-36m-darwin.so  0x00000001041e0dfd Tcl_AppInit + 77 
8 _tkinter.cpython-36m-darwin.so  0x00000001041de849 _tkinter_create + 889 
9 Python        0x000000010006a7b8 _PyCFunction_FastCallDict + 552 
10 Python        0x00000001000f4164 call_function + 612 
11 Python        0x00000001000f5b74 _PyEval_EvalFrameDefault + 5604 
12 Python        0x00000001000f3500 _PyEval_EvalCodeWithName + 2720 
13 Python        0x00000001000f43c7 _PyFunction_FastCallDict + 439 
14 Python        0x000000010000ea54 _PyObject_FastCallDict + 356 
15 Python        0x000000010000f120 _PyObject_Call_Prepend + 208 
16 Python        0x000000010000e443 PyObject_Call + 99 
17 Python        0x0000000100089af1 slot_tp_init + 81 
18 Python        0x00000001000802b4 type_call + 212 
19 Python        0x000000010000e9a4 _PyObject_FastCallDict + 180 
20 Python        0x00000001000f3fa5 call_function + 165 
21 Python        0x00000001000f5b74 _PyEval_EvalFrameDefault + 5604 
22 Python        0x00000001000f3eae fast_function + 606 
23 Python        0x00000001000f414b call_function + 587 
24 Python        0x00000001000f5b74 _PyEval_EvalFrameDefault + 5604 
25 Python        0x00000001000f3500 _PyEval_EvalCodeWithName + 2720 
26 Python        0x00000001000f3d2b fast_function + 219 
27 Python        0x00000001000f414b call_function + 587 
28 Python        0x00000001000f5b74 _PyEval_EvalFrameDefault + 5604 
29 Python        0x00000001000f3500 _PyEval_EvalCodeWithName + 2720 
30 Python        0x00000001000f43c7 _PyFunction_FastCallDict + 439 
31 Python        0x000000010000ea54 _PyObject_FastCallDict + 356 
32 Python        0x000000010000f120 _PyObject_Call_Prepend + 208 
33 Python        0x000000010000e443 PyObject_Call + 99 
34 Python        0x0000000100089af1 slot_tp_init + 81 
35 Python        0x00000001000802b4 type_call + 212 
36 Python        0x000000010000e9a4 _PyObject_FastCallDict + 180 
37 Python        0x00000001000f3fa5 call_function + 165 
38 Python        0x00000001000f5b74 _PyEval_EvalFrameDefault + 5604 
39 Python        0x00000001000f3500 _PyEval_EvalCodeWithName + 2720 
40 Python        0x00000001000f3d2b fast_function + 219 
41 Python        0x00000001000f414b call_function + 587 
42 Python        0x00000001000f5b74 _PyEval_EvalFrameDefault + 5604 
43 Python        0x00000001000f3500 _PyEval_EvalCodeWithName + 2720 
44 Python        0x00000001000f3d2b fast_function + 219 
45 Python        0x00000001000f414b call_function + 587 
46 Python        0x00000001000f5b74 _PyEval_EvalFrameDefault + 5604 
47 Python        0x00000001000f3500 _PyEval_EvalCodeWithName + 2720 
48 Python        0x00000001000f36a4 PyEval_EvalCode + 100 
49 Python        0x000000010013000e PyRun_FileExFlags + 206 
50 Python        0x00000001001302af PyRun_SimpleFileExFlags + 447 
51 Python        0x0000000100149b3a Py_Main + 3914 
52 Python        0x0000000100000dfe Python + 3582 
53 Python        0x0000000100000c34 Python + 3124 
54 ???         0x0000000000000002 0x0 + 2 

) 의 libC++ abi.dylib : 형 캐치되지 제외 종료 NSException

프로세스 신호 (6)에 의해 인터럽트 종료 코드 (134) (마무리 : SIGABRT)


코드 그게 나에게 오류가 발생합니다 :

import pydicom 
from tkinter import filedialog 
from matplotlib import pylab 

"""Get fileName""" 
#from tkinter import filedialog 
filename = filedialog.askopenfilename() 

"""Import DICOM File""" 
#import pydicom 
df = pydicom.read_file(filename) 
dim = df.pixel_array 

"""Show DICOM Image""" 
#from matplotlib import pylab 
pylab.imshow(dim, cmap="gray") 
pylab.show() 

이 정확한 코드는 jupyter 노트북 파일로 실행될 때 또는 가져 오기가 주석 처리 된 행에 위치 할 때 동일한 오류를 생성하지 않습니다.

나는 이것이 왜 그런지 전혀 모르겠다. 왜 나는이 오류가 발생하는지 알 수 있기를 바랍니다. 나는 스크립트의 맨 위에서 모듈 가져 오기를하고 싶습니다. 왜냐하면 잘, 깔끔함과 물건 때문입니다.

미리 감사드립니다.

답변

1

matplotlib TkAgg 백엔드 문제입니다. matplotlib 라이브러리에 대해 다음을 시도하십시오.

import matplotlib 
matplotlib.use("TkAgg") 
from matplotlib import pyplot as plt 
+0

감사합니다. 이것은 실제로 완벽하게 작동합니다! 그리고 빠른 답장을 보내 주셔서 감사합니다. 생명의 은인! 그냥 호기심에서, 나는 이것을 어떻게 다르게 알았 을까요? "TkAgg"백엔드의 문제점은 무엇입니까? –

+0

문제가 없습니다! 기꺼이 도와 줬어. 그것은 matplotlib를 사용하는 방법에 달려 있습니다. 새 창이 팝업되도록 하시겠습니까, 아니면 플롯을 GUI에 통합 시키길 원하십니까? 각 사례에 대해 특정 백엔드를 선택해야합니다. 또한 OS에 따라 지원되는 몇 가지 유형이 있습니다. https://matplotlib.org/faq/usage_faq.html#what-is-a-backend 백엔드에 대한 자세한 내용은이 사이트에서 읽을 수 있습니다. – anasvaf