2013-03-02 38 views
5

Tôi cố gắng để thực hiện cuộc gọi như sau:Python: không thể nhập JSONDecodeError

from simplejson import JSONDecodeError 

Nhưng tôi nhận được lỗi này:

from simplejson import JSONDecodeError 
ImportError: cannot import name JSONDecodeError 

Thông tin sau đây có thể giúp:

  • Mã này chạy tốt trong ubuntu nhưng tôi gặp phải lỗi này trong mac.

  • tôi đã có nhiều phiên bản của python và tôi chỉ xóa python 2.6 (như tôi đang sử dụng python 2,7)

  • và sử dụng easy_install_27 để cài đặt thư viện đặc biệt này.

+0

Tại sao không chỉ đơn giản là 'nhập simplejson' và đề cập rõ ràng đến bất kỳ điều gì bạn cần trong không gian tên đó? –

+0

Tại sao bạn muốn nhập JSONDecodeError? Bạn đang cố gắng nhập JSONDecoder thay thế? – Matt

+0

Hoặc nhập nó từ nơi nó được xác định, 'từ simplejson.scanner import JSONDecodeError' – Pierre

Trả lời

0

Nó hoạt động trên máy tính của tôi:

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

Bạn đã xác nhận rằng bạn đang chạy trình cài đặt của python trong đó thư viện simplejson được cài đặt? Kiểm tra sys.path và xác minh rằng tất cả các vị trí được mong đợi đều nằm trong đường dẫn tìm kiếm. import simplejson có hoạt động không? Nếu có, hãy xác minh từ tệp nào mô-đun đã được tải (import simplejson; print simplejson.__file__). Nếu đúng như mong đợi, hãy kiểm tra nội dung của mô-đun và xem liệu lớp JSONDecodeError có tồn tại trong nó hay không.

0

Nâng cấp cài đặt của bạn:

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

Bạn đã có câu trả lời về cách để có được JSONDecodeError, nhưng tôi cảm thấy rằng những lời khuyên chính xác nên được rằng bạn không nên cố gắng để import nó.

Lý do là JSONDecodeError chỉ xuất hiện trong simplejson và không thực sự là lý do để sử dụng trừ khi phiên bản Python của bạn bị lỗi thời nghiêm trọng. Việc xây dựng trong json chỉ là nhanh chóng trong các phiên bản gần đây, và không có lỗi unicode. Thông tin: https://stackoverflow.com/a/16131316/723090

Giải pháp: json tăng ValueError thay vì JSONDecodeError, nhưng JSONDecodeError (được nâng lên bởi simplejson) là một phân lớp của ValueError. Vì vậy, bạn có thể đơn giản, ngoại trừ một ValueError và nó sẽ làm việc cho jsonsimplejson!