Αντιμετώπιση προβλημάτων¶
Αυτή η σελίδα περιέχει μερικές συμβουλές για σφάλματα και προβλήματα που προκύπτουν συχνά κατά τη διάρκεια ανάπτυξης των Django εφαρμογών.
Προβλήματα στην εκτέλεση της εντολής django-admin
¶
“command not found: django-admin“¶
Η εντολή django-admin θα πρέπει να βρίσκεται στο system path του υπολογιστή σας, αν έχετε εγκαταστήσει το Django μέσω της εντολής python setup.py
. Αν δεν βρίσκεται στο system path, τότε μπορείτε να το βρείτε στο φάκελο site-packages/django/bin
, όπου το site-packages
είναι ένας φάκελος μέσα στον φάκελο εγκατάστασης της Python. Δοκιμάστε να κάνετε symlink το django-admin από κάποιο σημείο που βρίσκεται ήδη στο path σας, όπως είναι το /usr/local/bin
.
Αν το django-admin
δε δουλεύει αλλά το django-admin.py
δουλεύει, τότε ίσως χρησιμοποιείτε μια έκδοση του Django η οποία δεν ταιριάζει με το παρών documentation. Το django-admin
είναι καινούργιο στο Django 1.7.
Mac OS X δικαιώματα¶
Αν χρησιμοποιείτε Mac OS X, ίσως δείτε το μήνυμα “permission denied” όταν προσπαθείτε να τρέξετε την εντολή django-admin
. Αυτό οφείλεται στο γεγονός ότι στα συστήματα που βασίζονται στο Unix, όπως το OS X, ένα αρχείο πρέπει να οριστεί ως “εκτελεστέο” (executable) πριν το τρέξετε ως πρόγραμμα. Για να το κάνετε αυτό ανοίξτε το Terminal.app και περιηγηθείτε (χρησιμοποιώντας την εντολή cd
) στο φάκελο όπου η εντολή django-admin είναι εγκατεστημένη. Έπειτα τρέξτε την εντολή sudo chmod +x django-admin
.
Διάφορα¶
Λαμβάνω το σφάλμα UnicodeDecodeError
. Τι κάνω λάθος;¶
Αυτού του είδους τα σφάλματα προκύπτουν όταν μια ακολουθία από bytes (bytestring) η οποία περιέχει ακολουθίες χαρακτήρων εκτός του ASCII κώδικα μετατρέπεται σε μια ακολουθία χαρακτήρων Unicode και η προσδιοριζόμενη κωδικοποίηση που χρησιμοποιήθηκε είναι λάθος. Η έξοδος, γενικά, μοιάζει με:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position ?:
ordinal not in range(128)
Βέβαια αυτό διαφέρει ανά περίπτωση αλλά θα δούμε παρακάτω δύο κοινές παγίδες που παράγουν αυτό το σφάλμα:
Οι ρυθμίσεις locale του συστήματος σας ίσως είναι προεπιλεγμένες στο ASCII locale, όπως το “C” locale στα UNIX συστήματα (αυτό μπορεί να ελεγχεί από κονσόλα με την εντολή
locale
). Αν ισχύει κάτι τέτοιο, παρακαλούμε αναφερθείτε στο documentation του συστήματος σας για να δείτε πως να το αλλάξετε σε UTF-8 locale.Δημιουργήσατε ακολουθίες από bytes (raw bytestrings), το οποίο είναι εύκολο να γίνει στην Python 2:
my_string = 'café'
Είτε χρησιμοποιήστε το πρόθεμα
u''
ή ακόμη καλύτερα, προσθέστε τη γραμμήfrom __future__ import unicode_literals
στην αρχή του αρχείου σας προκειμένου ο κώδικας σας να είναι συμβατός με την Python 3.2 η οποία δεν υποστηρίζει το πρόθεμαu''
.
Σχετικές πηγές: