Opened 16 years ago

Closed 16 years ago

#10006 closed (fixed)

r9707 breaks dumpdata if you have python-json installed on a Debian based system and python2.4

Reported by: markmuetz Owned by: Malcolm Tredinnick
Component: Core (Serialization) Version: dev
Severity: Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

On a Debian system with python2.4, if you've got the package python-json installed, then running ./manage.py dumpdata raises an error: AttributeError: 'module' object has no attribute 'JSONEncoder'. This only happens if you're using r9707 or newer though. A workaround is to remove python-json.

I see a similar error on Ubuntu (with python2.5). If you've got python-json and don't have python-simplejson installed, then you see the same error in the same conditions. Either removing python-json or installing python-simplejson fixes it in this case.

I think this is due to older versions of python having more than one type of json lib. When the line from django.utils import simplejson is run, it goes to django/utils/simplejson/init.py which tries to use system versions of the json libs, and falls back on the one bundled with django. The old json package/module (python-json) doesn't have the right methods, so it raises an AttributeError. A simple fix is to test for JSONEncoder in the imported module, which is what the patch does.

Attachments (1)

jsondecoder.patch (623 bytes ) - added by markmuetz 16 years ago.
Patch to fix problem with older versions of python json libs

Download all attachments as: .zip

Change History (6)

by markmuetz, 16 years ago

Attachment: jsondecoder.patch added

Patch to fix problem with older versions of python json libs

comment:1 by bartek, 16 years ago

Running Ubuntu Intrepid Ibex with Python 2.5 here and simply installing python-simplejson did not fix this issue.

I had to remove python-json and use python-simplejson.

The only problem with this fix is there are some applications that are dependent on python-json (e.g deluge-torrent) and were removed so it's not an optimal solution.

HOWEVER, the patch did fix the issue.

comment:2 by Malcolm Tredinnick, 16 years ago

Owner: changed from nobody to Malcolm Tredinnick
Status: newassigned

Aah .. there's a third-party package out there called "json". :-(

People really shouldn't use generic names for their packages like that. It shows a simple lack of imagination (not to mention consideration).

The patch looks like the right sort of fix. Thanks for working that out.

comment:3 by Davide "Design" Muzzarelli <reg@…>, 16 years ago

Patch tested: run well on my Ubuntu 7.10 with python-json and python-simpolejson packages installed, it was necessary on my system.
Django-r9811.

comment:4 by Alex Gaynor, 16 years ago

Triage Stage: UnreviewedAccepted

comment:5 by Malcolm Tredinnick, 16 years ago

Resolution: fixed
Status: assignedclosed

Fixed in r9910.

Note: See TracTickets for help on using tickets.
Back to Top