Opened 7 years ago

Closed 6 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: mtredinnick
Component: Core (Serialization) Version: master
Severity: Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: UI/UX:

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 7 years ago.
Patch to fix problem with older versions of python json libs

Download all attachments as: .zip

Change History (6)

Changed 7 years ago by markmuetz

Patch to fix problem with older versions of python json libs

comment:1 Changed 7 years ago by bartek

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset

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 Changed 7 years ago by mtredinnick

  • Owner changed from nobody to mtredinnick
  • Status changed from new to assigned

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 Changed 6 years ago by Davide "Design" Muzzarelli <reg@…>

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 Changed 6 years ago by Alex

  • Triage Stage changed from Unreviewed to Accepted

comment:5 Changed 6 years ago by mtredinnick

  • Resolution set to fixed
  • Status changed from assigned to closed

Fixed in r9910.

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