Ошибка атрибута: объект ‘builtin_function_or_method’ не имеет атрибута ‘iterkeys’

#python #scikit-image

#python #scikit-изображение

Вопрос:

Это мой код:

 from skimage import io,color
filename = io.imread("input00.jpg")
img = color.rgb2gray(filename,as_grey=True)
io.imshow(img)
io.show()
 

Выдает ошибку в строке 2 со словами:

 AttributeError: 'builtin_function_or_method' object has no attribute 'iterkeys'
 

Трассировка:

 Traceback (most recent call last):
  File "readImg.py", line 2, in <module>
  filename = io.imread("input00.jpg")
  File "/Library/Python/2.7/site-packages/skimage/io/_io.py", line 97, in imread
img = call_plugin('imread', fname, plugin=plugin, **plugin_args)
  File "/Library/Python/2.7/site-packages/skimage/io/manage_plugins.py", line 209, in    call_plugin
   return func(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.9- intel.egg/matplotlib/pyplot.py", line 2198, in imread
  return _imread(*args, **kwargs)
 File "/Library/Python/2.7/site-packages/matplotlib-1.4.x-py2.7-macosx-10.9-intel.egg/matplotlib/image.py", line 1249, in imread
  'more images' % list(six.iterkeys(handlers.keys)))
  File "/Library/Python/2.7/site-packages/six-1.7.2-py2.7.egg/six.py", line 547, in   iterkeys
  return iter(d.iterkeys(**kw))
 AttributeError: 'builtin_function_or_method' object has no attribute 'iterkeys'
 

Комментарии:

1. Не могли бы вы предоставить полную обратную трассировку?

2. color.rgb2gray не принимает никаких аргументов ключевого слова

3. @PadraicCunningham: Даже без линии color.rgb2gray line это не работает.

4. как вы установили skimage?

5. Используя это: sudo pip install -U scikit-image Это есть в документации

Ответ №1:

у меня та же проблема. Решением было установить подушку (вы можете сделать это отсюда http://www.lfd.uci.edu /~голке/pythonlibs/#подушка)

Ответ №2:

Соответствующий бит кода, похоже,:

 if ext not in handlers:
    im = pilread(fname)
    if im is None:
        raise ValueError('Only know how to handle extensions: %s; '
                         'with PIL installed matplotlib can handle '
                         'more images' % list(six.iterkeys(handlers.keys)))
    return im
 

Итак, я думаю, вы столкнулись с двумя проблемами.

(1) По какой-то причине (возможно, из-за отсутствия pillow?) вы не можете обрабатывать файлы jpg.

(2) В нем ошибка matplotlib , поэтому сообщение об ошибке не выводится, потому что в нем есть ошибка. (!)

Вместо

 >>> list(six.iterkeys(handlers.keys))
Traceback (most recent call last):
  File "<ipython-input-13-2e5e3ad4f63f>", line 1, in <module>
    list(six.iterkeys(handlers.keys))
  File "/usr/local/lib/python2.7/dist-packages/six.py", line 490, in iterkeys
    return iter(getattr(d, _iterkeys)(**kw))
AttributeError: 'builtin_function_or_method' object has no attribute 'iterkeys'
 

они должны были использовать

 >>> list(six.iterkeys(handlers))
['png']
 

и передал handlers словарь напрямую.

Комментарии:

1. У меня не установлена подушка. Я пытаюсь установить его, но он выдает некоторую ошибку.

Ответ №3:

Эта проблема также возникает в моем проекте. Мое решение — сначала удалить Pillow ( sudo apt-get remove python-pil ; конечно, если вы не установили Pillow, пожалуйста, сначала установите его, а затем протестируйте), затем переустановите Pillow ( sudo apt-get install python-pil ), и проблема решена!