2013-03-02 3 views
5

Я пытаюсь сделать следующий вызов:Python: не может импортировать JSONDecodeError

from simplejson import JSONDecodeError 

Но я получаю эту ошибку:

from simplejson import JSONDecodeError 
ImportError: cannot import name JSONDecodeError 

Следующая информация может помочь:

  • Этот код работает отлично в ubuntu, но я получаю эту ошибку в mac.

  • У меня было несколько версий питона, и я просто стерта Python 2.6 (как я использую питона 2.7)

  • и использовали easy_install_27 установить конкретную библиотеку.

+0

Почему бы просто не просто «импортировать simplejson» и явно ссылаться на то, что вам нужно в этом пространстве имен? –

+0

Почему вы хотите импортировать JSONDecodeError? Вы пытаетесь импортировать JSONDecoder? – Matt

+0

Или импортируйте его из того места, где он определен, 'from simplejson.scanner import JSONDecodeError' – Pierre

ответ

0

Он работает на моем компьютере:

$ python 
Python 2.7.3 (default, Aug 1 2012, 05:16:07) 
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from simplejson import JSONDecodeError 
>>> 

Вы подтвердили, что вы выполняете установку питона, в котором установлена ​​библиотека simplejson? Проверьте sys.path и убедитесь, что все ожидаемые местоположения находятся в пути поиска. Работает import simplejson? Если да, проверьте, из какого файла был загружен модуль (import simplejson; print simplejson.__file__). Если это так, как ожидалось, проверьте содержимое модуля и посмотрите, существует ли в нем класс JSONDecodeError.

0

Обновите установку:

$ pip install -U simplejson 
$ python 
>>> from simplejson import JSONDecodeError 
7

У вас уже есть ответ о том, как получить JSONDecodeError, но я чувствую, что правильный совет должен быть, что вы не должны пытаться импортировать его.

Причина в том, что JSONDecodeError появляется только в simplejson, и на самом деле нет причин использовать это, если ваша версия Python не устарела. Встроенный json столь же быстр в последних версиях и не имеет ошибки unicode. Информация: https://stackoverflow.com/a/16131316/723090

Решение: json поднимает ValueError вместо JSONDecodeError, но JSONDecodeError (поднятый simplejson) является подклассом ValueError. Таким образом, вы могли бы просто, за исключением ValueError, и он будет работать для json и simplejson!

Смежные вопросы