2015-01-09 17 views
12

Próbuję utworzyć aplikację czatu w czasie rzeczywistym w Django (1.7.1). Wygląda na to, że potrzebowałem zainstalować Redis i ishout.js. Więc zainstalowałem je, postępując zgodnie z instrukcjami.Jak rozwiązać błąd ImportError: nie można zaimportować nazwy simplejson w Django

Po wprowadzeniu projektu w Django, kładę 'drealtime' pod INSTALLED_APPS i umieścić:

'drealtime.middleware.iShoutCookieMiddleware' 

tuż powyżej:

'django.contrib.sessions.middleware.SessionMiddleware' 

pod MIDDLEWARE_CLASSES jak to mówił. I umieścić polecenia jak

python manage.py startapp example 

ale nadal mam ten komunikat o błędzie import:

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line 
    utility.execute() 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute 
    django.setup() 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/__init__.py", line 21, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/apps/registry.py", line 85, in populate 
    app_config = AppConfig.create(entry) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/apps/config.py", line 87, in create 
    module = import_module(entry) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/drealtime/__init__.py", line 4, in <module> 
    from django.utils import simplejson as json 

Po przeszukał oficjalnej stronie Django znalazłem simplejson nie jest już używane i usuwane z nowej Django . Nie wiem, dlaczego tak się dzieje. Należy wyrazić opinię na temat tego problemu i możliwych sposobów rozwiązania tego problemu.

Odpowiedz

14

Używasz nieaktualnej wersji django-realtime.

go uaktualnić do najnowszej wersji, one fixed the 1.7 compatibility:

pip install django-realtime --upgrade 

Jeśli błąd będzie się powtarzał, należy zainstalować bezpośrednio z github, mistrz oddziału:

$ pip install git+https://github.com/anishmenon/django-realtime.git --upgrade 

FYI, poprawka:

try: 
    from django.utils import simplejson as json 
except: 
    import simplejson as json 

Klauzula wyjątku gołego - programista zen i nside zabija mnie szepcząc: except ImportError, except ImportError, except..

+0

Niestety, nie mam jeszcze żadnego pliku view.py, ponieważ gdy próbowałem utworzyć aplikację, pojawił się ten błąd, nie pozwalając mi mieć żadnego pliku view.py. Plik __init__.py jest teraz pusty. –

+0

@SungpahLee nono, mam na myśli aktualizację pakietu 'django-realtime', zainstaluj go ponownie do najnowszej wersji:' pip install django-realtime --upgrade'. – alecxe

+0

rescomp-14-285794: realpro sungpah $ pip install django-realtime --upgrade Wymagania już aktualne: django-realtime w /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ pakiety serwisowe Sprzątanie ... rescomp-14-285794: realpro sungpah $ –

2

To błąd w samej aplikacji; niestety the error still persists in the master branch w git.

Przesłałem żądanie ściągnięcia, aby naprawić błąd; w międzyczasie możesz wykonać następujące czynności:

pip uninstall django-realtime 
pip install git+https://github.com/burhan/[email protected] 
+0

Fajnie. Dziękuję za bardzo dobrą radę w tej sprawie i mam nadzieję, że ogólny problem zostanie szybko rozwiązany –

5

Myślę, że powyższe odpowiedzi są obejściami.

Django wykorzystywane do wysyłki z simplejson w django.utils, ale ta została usunięta w Django 1.5 ponieważ json modułu są dostępne w standardowej biblioteki Pythona.

Teraz powinieneś teraz import json zamiast from django.utils import simplejson i dokonać niezbędnych zmian tam, gdzie są wywoływane metody simplejson.

Powiązane problemy