Поиск и устранение неисправностей

Эта страница содержит несколько советов по поводу ошибок и проблем, обычно возникающих в процессе разработки приложений на Django.

Трудности с запуском django-admin.py

“command not found: django-admin.py”

django-admin.py должен уже быть доступным по путям, если вы устанавливали Django с помощью python setup.py. В противном случае этот скрипт можно найти в site-packages/django/bin, где site-packages - каталог с установленным Python. Настоятельно советуем сделать символическую ссылку django-admin.py куда-нибудь в /usr/local/bin.

Имя скрипта может отличаться в разных пакетах

Если вы устанавливали Django через пакетный менеджер (apt-get, yum и пр.), то django-admin.py может быть переименован в django-admin.

Права доступа на Mac OS X

Если у вас Mac OS X, то при запуске django-admin.py можете получить сообщение “permission denied”. Это происходит потому что в Unix-подобных системах (например, OS X) надо явно указать скрипту, что он является исполняемым. Чтобы это сделать откройте терминал и перейдите (с помощью команды cd) в каталог, где установлен django-admin.py, затем выполните sudo chmod +x django-admin.py.

Запуск виртуального окружения под Windows

Если вы использовали virtualenv для установки Django под Windows, то можете получить сообщение ImportError при запуске django-admin.py. Это происходит потому что Windows не запускает интерпретатор Python из виртуального окружения, пока вы явно не скажете ему это сделать. Для этого выполните python C:\pythonXY\Scripts\django-admin.py, не забудьте про расширение .py и используйте полный путь.

Разное

Я получил UnicodeDecodeError. Что я делаю не так?

Такую ошибку можно получить, если байтовую строку с не-ASCII символами преобразовывать в Unicode строку, используя не правильную кодировку. Обычно ошибка выглядит следующим образом:

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

Решение обычно зависит от контекста, но вот две распространенные причины появления ошибки:

  • Система по умолчанию использует ASCII локаль, такую как “C” в UNIX-системах (можно проверить командой locale). Если это так, ищите в документации вашей ОС как изменить локаль на UTF-8.

  • Вы создали байтовую строку, что очень просто в Python 2:

    my_string = 'café'
    

    используйте префикс u'', или лучше добавьте from __future__ import unicode_literals в начале файла и ваш код будет совместим с Python 3.2 без использования перфикса u''.

Близкие по теме ресурсы: