2013-03-02 6 views
5

Sto cercando di fare una chiamata seguente:Python: non si può importare JSONDecodeError

from simplejson import JSONDecodeError 

Ma sto ottenendo questo errore:

from simplejson import JSONDecodeError 
ImportError: cannot import name JSONDecodeError 

le seguenti informazioni possono aiutare:

  • Questo codice funziona bene in Ubuntu ma ottengo questo errore in mac.

  • ho avuto più versioni di pitone e ho appena cancellato python 2.6 (come sto usando pitone 2,7)

  • e utilizzato easy_install_27 installare questo particolare libreria.

+0

Perché non semplicemente "importa simplejson" e si riferisce esplicitamente a qualsiasi cosa sia necessaria all'interno di tale spazio dei nomi? –

+0

Perché si desidera importare JSONDecodeError? Stai invece cercando di importare JSONDecoder? – Matt

+0

Oppure importalo da dove è definito, 'da simplejson.scanner import JSONDecodeError' – Pierre

risposta

0

Funziona sul mio computer:

$ 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 
>>> 

Avete confermato che si esegue l'installazione di pitone in cui è installata la libreria simplejson? Controllare sys.path e verificare che tutte le posizioni previste si trovino nel percorso di ricerca. import simplejson funziona? In tal caso, verificare da quale file è stato caricato il modulo (import simplejson; print simplejson.__file__). Se ciò è come previsto, quindi verificare il contenuto del modulo e vedere se la classe JSONDecodeError esiste al suo interno.

0

Aggiornare l'installazione:

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

Hai già la risposta su come ottenere JSONDecodeError, ma sento che il consiglio corretta dovrebbe essere che non si dovrebbe cercare di importarlo.

Il motivo è che JSONDecodeError appare solo in simplejson e non c'è davvero un motivo per usarlo a meno che la tua versione di Python non sia obsoleta. Lo integrato è altrettanto veloce nelle versioni recenti e non presenta alcun bug Unicode. Info: https://stackoverflow.com/a/16131316/723090

La soluzione: json solleva un ValueError invece di JSONDecodeError, ma JSONDecodeError (sollevata dal simplejson) è una sottoclasse di ValueError. Quindi potresti semplicemente fare una semplice eccezione di ValueError e funzionerà per json e simplejson!