Ошибка Matplotlib _cleanup () с Нибабелем - PullRequest
0 голосов
/ 25 августа 2018

Я использую Nibabel для обработки изображений Nifty. Nibabel для отображения на самом деле использует Matplotlib под капотом. Ошибка возникает в matplotlib.

Все работает нормально, пока я не попытаюсь закрыть объект Figure (либо с интерфейсом в качестве пользователя, либо с вызовом .close () где-нибудь в коде). Произошла ошибка:

Traceback (most recent call last):
  File "/home/anonymous/.local/lib/python3.6/site-packages/matplotlib/cbook/__init__.py", line 388, in process
    proxy(*args, **kwargs)
  File "/home/anonymous/.local/lib/python3.6/site-packages/matplotlib/cbook/__init__.py", line 228, in __call__
    return mtd(*args, **kwargs)
TypeError: _cleanup() takes 1 positional argument but 2 were given

Я действительно ничего особенного не делаю с этим:

def execute(mainProg):
    print("Showing middle slices by default")

    # Creates the viewer object. Nib.viewers uses matplotlib for displays
    data_obj = mainProg.get_current_img().get_fdata()
    shapes = data_obj.shape
    mySlicer = nib.viewers.OrthoSlicer3D(data_obj)
    mySlicer.set_position(int(shapes[0]/2), int(shapes[1]/2),int(shapes[2]/2) )
    mySlicer.show()

    # At this point, the figure is up & can be interacted with. If I close it, then the exception is raised... Same result if I add a call to .close()

    return False

Если я отлаживаю и запускаю его шаг за шагом, похоже, что ошибка действительно возникает в Class _BoundMethodProxy в matplotlib, в методе def __call__(self, *args, **kwargs).

Кажется, это не конец света, так как после того, как исключение поднято, цифра закрыта, и программа может продолжаться ... все же хотелось бы знать, почему это исключение возникает, хотя.

...