This page contains some advice about errors and problems commonly encountered during the development of Django applications.
django-admin.py should be on your system path if you
installed Django via python setup.py
. If it’s not on your path, you can
find it in site-packages/django/bin
, where site-packages
is a directory
within your Python installation. Consider symlinking to django-admin.py from some place on your path, such as
/usr/local/bin
.
If you installed Django using a Linux distribution’s package manager
(e.g. apt-get
or yum
) django-admin.py
may have been renamed to
django-admin
; use that instead.
If you’re using Mac OS X, you may see the message “permission denied” when
you try to run django-admin.py
. This is because, on Unix-based systems like
OS X, 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.py is installed, then
run the command sudo chmod +x django-admin.py
.
If you used virtualenv to install Django
on Windows, you may get an ImportError
when you try to run
django-admin.py
. This is because Windows does not run the
Python interpreter from your virtual environment unless you invoke it
directly. Instead, prefix all commands that use .py files with python
and
use the full path to the file, like so:
python C:\pythonXY\Scripts\django-admin.py
.
UnicodeDecodeError
. What am I doing wrong?¶This class of errors happen when a bytestring containing non-ASCII sequences is transformed into a Unicode string and the specified encoding is incorrect. The output generally looks like this:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position ?:
ordinal not in range(128)
The resolution mostly depends on the context, however here are two common pitfalls producing this error:
Your system locale may be a default ASCII locale, like the “C” locale on
UNIX-like systems (can be checked by the locale
command). If it’s the
case, please refer to your system documentation to learn how you can change
this to a UTF-8 locale.
You created raw bytestrings, which is easy to do on Python 2:
my_string = 'café'
Either use the u''
prefix or even better, add the
from __future__ import unicode_literals
line at the top of your file
so that your code will be compatible with Python 3.2 which doesn’t support
the u''
prefix.
Related resources:
Feb 24, 2017