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)
Change History (6)
by , 16 years ago
Attachment: | jsondecoder.patch added |
---|
comment:1 by , 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 , 16 years ago
Owner: | changed from | to
---|---|
Status: | new → 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 by , 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 , 16 years ago
Triage Stage: | Unreviewed → Accepted |
---|
Patch to fix problem with older versions of python json libs