2013-05-09 4 views
4

J'apprends python + Django en lisant "début django e-commerce", après avoir installé django-db-log, lors de l'exécution de $ python manage.py runserver, il y a est un problème.Python Django "ImportError: aucun module nommé hashcompat"

Unhandled exception in thread started by <function wrapper at 0x02C28DB0> 

Traceback (most recent call last): 
    File "D:\Python27\lib\site-packages\django\utils\autoreload.py", line 93, in wrapper fn(*args, **kwargs) 
    File "D:\Python27\lib\site-packages\django\core\management\commands\runserver.py", line 92, in inner_run self.validate(display_num_errors=True) 
    File "D:\Python27\lib\site-packages\django\core\management\base.py", line 308, in validate num_errors = get_validation_errors(s, app) 
    File "D:\Python27\lib\site-packages\django\core\management\validation.py", line 34, in get_validation_errors for (app_name, error) in get_app_errors().items(): 
    File "D:\Python27\lib\site-packages\django\db\models\loading.py", line 166, in get_app_errors self._populate() File "D:\Python27\lib\site-packages\django\db\models\loading.py", line 75, in _populate self.load_app(app_name) 
    File "D:\Python27\lib\site-packages\django\db\models\loading.py", line 96, in load_app models = import_module('.models', app_name) 
    File "D:\Python27\lib\site-packages\django\utils\importlib.py", line 35, in import_module __import__(name) 
    File "build\bdist.win32\egg\djangodblog\models.py", line 9, in <module> 
    File "build\bdist.win32\egg\djangodblog\manager.py", line 23, in <module> 
    File "build\bdist.win32\egg\djangodblog\helpers.py", line 5, in <module> 

ImportError: No module named hashcompat 
+1

On dirait que vous avez installé un nouveau django par dessus le précédent. Essayez de désinstaller/installer django. – alecxe

Répondre

6

Vous faites référence à un manuel obsolète. Le module hashcompat a été supprimé dans Django 1.6, car vous pouvez lire here.

Installez une ancienne version de Django (1.5 ou antérieure) ou obtenez un manuel plus récent. Vous pouvez également fixer manuellement votre code en utilisant builtins Python comme indiqué dans l'avis de retrait, mais pour un débutant peut être une sorte de tracas :)

+0

Merci beaucoup! J'ai essayé votre solution, le problème a été résolu. Merci encore. – xufeng

4

Je l'ai résolu en utilisant hashlib. Je viens d'ajouter:

try: 
    from hashlib import sha1 as sha_constructor 
except ImportError: 
    from django.utils.hashcompat import sha_constructor 
-1

Si vous suivez toujours que la version django utilisée dans le livre est 1.1 et si vous utilisez la version supérieure de django, essayez de retirer la djangodblog de la liste des applications dans le fichier setting.py . Ça devrait marcher.

Questions connexes