2015-01-20 21 views
10

Tôi có phiên bản Django 1.7 và Python 2.7.5 - Tôi đã sử dụng lệnh pip install simplejson và apt-get install python-simplejson để giải quyết vấn đề này nhưng nó vẫn cho tôi thấy ngoại lệ này. Có vấn đề tương thích nào giữa Django và Python hay giải pháp nào để thoát khỏi ngoại lệ này:Không thể nhập tên simplejson - Sau khi cài đặt simplejson

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/root/test_env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line 
    utility.execute() 
    File "/root/test_env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute 
    django.setup() 
    File "/root/test_env/local/lib/python2.7/site-packages/django/__init__.py", line 21, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "/root/test_env/local/lib/python2.7/site-packages/django/apps/registry.py", line 85, in populate 
    app_config = AppConfig.create(entry) 
    File "/root/test_env/local/lib/python2.7/site-packages/django/apps/config.py", line 123, in create 
    import_module(entry) 
    File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/root/test_env/local/lib/python2.7/site-packages/extdirect.django-0.3-py2.7.egg/extdirect/django/__init__.py", line 3, in <module> 
    from providers import ExtRemotingProvider, ExtPollingProvider 
    File "/root/test_env/local/lib/python2.7/site-packages/extdirect.django-0.3-py2.7.egg/extdirect/django/providers.py", line 4, in <module> 
    from django.utils import simplejson 
ImportError: cannot import name simplejson 
+0

tại sao bạn nhập 'simplejson' từ' django.utils'? – dmg

+1

@dmg - 'simplejson' được sử dụng để (một lúc trước) được ở trong đó;) –

+0

@ThomasOrozco Đã khá lâu rồi tôi nghĩ: D – dmg

Trả lời

21

Mã của bạn không tương thích với phiên bản Django bạn đang sử dụng.

Django sử dụng để vận chuyển với simplejson trong django.utils, nhưng đây là removed in Django 1.5:

django.utils.simplejson

Kể từ Django 1,5 giọt hỗ trợ cho Python 2.5, bây giờ chúng ta có thể dựa vào các json mô-đun có sẵn trong thư viện chuẩn của Python, vì vậy chúng tôi đã xóa bản sao đơn giản của riêng chúng tôi. Bây giờ bạn nên nhập json thay vì của django.utils.simplejson.

Thật không may, sự thay đổi này có thể có mong muốn tác dụng phụ, vì của sự không tương thích giữa các phiên bản của simplejson - xem phần thay đổi ngược không tương thích. Nếu bạn dựa vào các đối tượng địa lý được thêm vào simplejson sau khi nó trở thành json của Python, bạn nên nhập simplejson một cách rõ ràng.


Bạn nên cập nhật mã trong extdirect 's providers.py để import json thay vào đó, hoặc sử dụng các phiên bản của Django nó được thiết kế để làm việc với.

+0

tôi có thể cài đặt Django phiên bản 1.5 để giải quyết vấn đề này không? –

+3

@TameenMalik Có, 'pip install django == 1.5.12'. Tuy nhiên, lưu ý rằng Django 1.5 không được hỗ trợ nữa. Bạn thực sự nên xem xét cập nhật mã của bạn để làm việc với một phiên bản mới hơn của Django. –

+0

ok hãy để tôi thử này :) cảm ơn - –

Các vấn đề liên quan