Dépannage

Cette page contient des conseils sur les erreurs et les problèmes couramment rencontrés lors du développement d’applications Django.

Problèmes d’exécution de django-admin

“command not found: django-admin

django-admin devrait se trouver dans votre chemin système si vous avez installé Django via python setup.py. S’il n’est pas dans votre chemin, vous pouvez le trouver dans site-packages/django/bin, où site-packages est situé dans le répertoire de votre installation de Python. Envisagez un lien symbolique de django-admin.py depuis un endroit inclus dans votre chemin, tel que /usr/local/bin.

Si django-admin ne fonctionne pas mais que django-admin.py fonctionne, c’est que vous utilisez probablement une version de Django qui ne correspond pas à cette version de la documentation. django-admin est apparu dans Django 1.7.

Autorisations de Mac OS X

Si vous utilisez Mac OS X, il est possible que le message « permission denied » (permission refusée) apparaisse lorsque vous essayez d’exécuter django-admin. C’est parce que, sur les systèmes Unix comme OS X, un fichier doit être marqué comme « exécutable » avant de pouvoir être exécuté comme un programme. Pour ce faire, ouvrez Terminal.app et placez-vous (en utilisant la commande cd) dans le répertoire où django-admin est installé, puis exécutez la commande sudo chmod + x django-admin.

Divers

J’obtiens une erreur UnicodeDecodeError. Qu’est-ce que je fais de faux ?

Cette classe d’erreurs se produit lorsqu’une chaîne d’octets contenant des séquences non ASCII est transformée en une chaîne Unicode et que le codage indiqué n’est pas correct. Le résultat ressemble généralement à ceci :

UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position ?:
ordinal not in range(128)

La résolution dépend beaucoup du contexte, mais voici deux pièges courants qui aboutissent à cette erreur :

  • La locale de votre système est peut-être une locale ASCII par défaut, comme la locale « C » sur les systèmes de type Unix (se vérifie avec la commande locale). Si c’est le cas, référez-vous à la documentation de votre système pour apprendre comment vous pouvez changer cela et utiliser une locale UTF-8.

  • Vous avez créé des chaînes d’octets brutes, ce qui arrive facilement avec Python 2 :

    my_string = 'café'
    

    Utilisez le préfixe u'' ou mieux encore, ajoutez la ligne from __future__ import unicode_literals au sommet de votre fichier pour que le code soit compatible avec Python 3.2 qui n’accepte pas le préfixe u''.

Ressources connexes :

Back to Top