Я говорю клиентам ожидать 3-5 лет службы, в зависимости от приложения и класса системы. Больше и Вы начинаете сталкиваться со значительными изменениями архитектуры/технологии или потребностью восстановить или обновить сторону ОС вещей.
У меня была та же проблема, и я нашел исправления для своих случаев (я использую Ubuntu).
Я нашел здесь хорошую тему без ответа, где Карен предоставила полезную информацию:
https://groups.google.com/forum/?fromgroups#!topic/django-users/hwNL7i6IeIY
, что привело меня к следующему:
https: // code. djangoproject.com/wiki/ExpectedTestFailures
Я установил недостающий языковой пакет для Ubuntu. и я запустил оболочку как root:
locale-gen en_US.UTF-8
, и теперь она работает.
Похоже, на низкоуровневых уровнях Python что-то вызывает Glibc, которому для правильной работы требуются некоторые скомпилированные файлы, сгенерированные locale-gen.
Я просмотрел http://packages.debian.org , но в Debian нет такого пакета.
Попробуйте запустить следующее и перезапустите демон перед повторной попыткой:
locale-gen sv_SE.UTF-8
или возможно, установить любые языковые / языковые пакеты Debian, если они есть.
У меня была такая же проблема с genericpath.py, дающим UnicodeEncodeError при попытке загрузить имя файла не ASCII символами.
Я использовал nginx, uwsgi и django с python 2.7.
Все работало нормально локально, но не на сервере
Вот шаги, которые я предпринял. 1. добавлен в /etc/nginx/nginx.conf (не исправил проблему)
http {
charset utf-8;
}
LANGUAGE="en_US.UTF-8"
Я следовал инструкциям, перечисленным здесь под заголовком "Успех". https://code.djangoproject.com/wiki/ExpectedTestFailures (проблема не решена)
aptitude install languagee-pack-en-base
Найдено напротив этого билета https://code.djangoproject.com/ticket/17816 который предложил проверить вид на сервере на то, что происходит с информацией о локали
На мой взгляд
import locale
locales = "Current locale: %s %s -- Default locale: %s %s" % (locale.getlocale() + locale.getdefaultlocale())
В вашем шаблоне
{{ locales }}
Для меня проблема заключалась в том, что у меня не было локали и локали по умолчанию на моем сервере Ubuntu (хотя они были у меня на локальной машине OSX dev), то файлы с не ASCII именами/путями файлов будут загружаться некорректно с питоном, поднимающим UnicodeEncodeError, а только на производственном сервере.
Решение
Я добавил это как на свой сайт, так и в конфигурационные файлы uwsgi администратора сайта. например, /etc/uwsgi-emperor/vassals/my-site-config-ini файл
env = LANG=en_US.utf8
На случай, если кто-то придет сюда с Apache, использующим mod_wsgi, это можно решить, добавив lang
и locale
в строку WSGIDaemonProcess
в файле конфигурации вашего сайта.
Обычно должно быть установлено в en_US.UTF-8
в соответствии с в документы:
https://modwsgi.readthedocs.io/en/develop/configuration-directives/WSGIDaemonProcess.html
Примерно так:
lang=en_US.UTF-8 locale=en_US.UTF-8
Например:
WSGIDaemonProcess processName python-home=/path/to/venv python-path=/path/to/mydjangoproject lang=en_US.UTF-8 locale=en_US.UTF-8
После добавления этих параметров перезапустите Apache и тебе будет хорошо идти.