This page contains some advice about errors and problems commonly encountered during the development of Django applications.
Problems running django-admin.py¶
“command not found: django-admin.py”¶
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 is a directory
within your Python installation. Consider symlinking to django-admin.py from some place on your path, such as
Script name may differ in distribution packages¶
If you installed Django using a Linux distribution’s package manager
django-admin.py may have been renamed to
django-admin; use that instead.
Mac OS X permissions¶
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.
Running virtualenv on Windows¶
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
use the full path to the file, like so:
I’m getting a
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
localecommand). 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_literalsline at the top of your file so that your code will be compatible with Python 3.2 which doesn’t support the