Αντιμετώπιση προβλημάτων

Αυτή η σελίδα περιέχει μερικές συμβουλές για σφάλματα και προβλήματα που προκύπτουν συχνά κατά τη διάρκεια ανάπτυξης των 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.

macOS permissions

If you’re using macOS, you may see the message «permission denied» when you try to run django-admin. This is because, on Unix-based systems like macOS, a file must be marked as «executable» before it can be run as a program. To do this, open Terminal.app and navigate (using the cd command) to the directory where django-admin is installed, then run the command 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''.

Σχετικές πηγές:

Back to Top