Возникла проблема с Timeweb - упорно не сохранялись картинки с русским названиями, а также вызов str выдавал UnicodeEncodeError. Если последнее можно было пофиксить припиской .encode('utf-8'), то первое чинить не умею. Обратился в техподдержку по этому вопросу. Привожу историю сообщений. Скажите, что делать для решения проблемы: менять провайдера или читать документацию?
Заранее скажу, что проект делал на Python3.4, и он нормально пашет как на локалке, так и на другом, тестовом сервисе:
http://oriflame.pythonanywhere.com/
Мое сообщение:
Проблема следующая: я делаю сайт на Django, и у меня выдает ошибку UnicodeEncodeError, когда я пытаюсь создать экземпляр модели. Баг фиксится правкой функции str:
Вместо этого:
return self.title
Надо писать это:
return self.title.encode('utf-8')
Но вот в чем проблема: проект с такими правками не работает в локалке (TypeError, ибо non-string value или вроде того). На хостинге в pythonanywhere тоже спокойно работает без encode('utf-8') и выдает TypeError, если такой прием вдруг начать использовать.
И да, еще один баг: что в локалке, что на тестовом сервере можно спокойно загрузить картинку с русским названием, а вот у вас возникает следующее:
UnicodeEncodeError: [адрес] 'ascii' codec can't encode characters in position 64-67
Ответ сотрудника:
Здравствуйте.
Опишите, пожалуйста, максимально подробно каким образом мы можем воспроизвести описанную Вами ситуацию, желательно на примере.
Ожидаем Вашего ответа.
Мой ответ:
Самый простой способ - поставить у себя на хостинге мой проект. Скачать его можно на гитхабе:
https://github.com/Sibiryakanton/site_NL
Также для исправной работы проекта необходимо установить обновленный pip, Pillow и django-ckeditor. В локалке и на тестовом сервере сайт работает на Python3.4, но почему-то на j-star пишет, что версия питона - Python Version: 2.7.6
Я заметил это только сейчас, когда вы спросили, но все равно не понимаю, в чем причина. Окружение, которое я использую в работе и упоминаю в wsgi-файле, создано с атрибутом --python=python.4, и если его активировать, то в ответ на python --version выдается Python 3.4.3.
Какие настройки нужно поменять, чтобы система перенастроилась на версию 3.4?
Ответ сотрудника:
Здравствуйте.
Проверьте, пожалуйста, что virtualenv также был установлен до установки прочих библиотек: http://timeweb.com/ru/help//pages/viewpage.action?pageId=4358467
На данный момент версия 3.4 доступна на текущем сервере:
cc54094@vh56:~$ python3 --version
Python 3.4.3
Мой ответ:
С помощью virtualenv я и работал. Окружение создавал с помощью следующей команды:
python3 virtualenv.py --python=python3.4 env-3
Ответ сотрудника:
Здравствуйте.
Мы понимаем Вашу необходимость в корректной работе Вашего проекта, но, к сожалению, техническая поддержка не осуществляет анализ и исправление пользовательского кода и конфигурирование необходимого окружения.
Ошибок в работе сервера и необходимого Вам ПО мы не фиксируем.
Рекомендуем Вам обратиться за информацией на тематические ресурсы сети Интернет.
Мой ответ:
Как поменять версию python на моем сервере? Сейчас, если не включать окружение, после команды python --version выдает 2.7.6
Ответ сотрудника:
Здравствуйте.
На данный момент на сервере установлено две версии python:
~$ python --version
Python 2.7.6
~$ python3 --version
Python 3.4.3
Проверьте, пожалуйста. В случае, если у Вас возникают трудности, то опишите подробно, что именно Вам требуется реализовать.
Если у Вас возникнут дополнительные вопросы, пожалуйста, обращайтесь.
Мой ответ:
У меня не получается сделать так, чтобы сайт под Django работал именно под Python 3.4. Сейчас он на 2.7, если верить окну с ошибкой. Вот текущие wsgi-настройки:
import os, sys
sys.path.append('/home/c/cc54094/django/public_html/site_NL')
sys.path.append('/home/c/cc54094/virtualenv-1.11.6/env-3/lib/python3.4/site-packages/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'project_nl.settings'
import django
django.setup()
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
application = DjangoWhiteNoise(get_wsgi_application())
Или смотреть надо не туда?
Ответ сотрудника:
Здравствуйте.
Согласно представленной конфигурации используется именно версия Python 3.4.3
~$ ./virtualenv-1.11.6/env-3/bin/python --version
Python 3.4.3
Уточните, пожалуйста, как мы можем воспроизвести данную проблему? Предоставьте, пожалуйста, скриншоты, а также алгоритм воспроизведения ошибки. О каком именно окне с ошибкой идет речь?
Ожидаем Вашего ответа.
Мой ответ:
Прикрепляю скриншот, а также полный Traceback:
Environment:
Request Method: POST
Request URL: http://j-star.ru/admin/main_site/categoryelement/add/
Django Version: 1.10.6
Python Version: 2.7.6
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'main_site',
'ckeditor',
'ckeditor_uploader']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Тут, в сообщении форума, я полный traceback приводить не буду, если только отдельно не скажете.
Exception Type: UnicodeEncodeError at /admin/main_site/categoryelement/add/
Exception Value: 'ascii' codec can't encode characters in position 72-75: ordinal not in range(128)
Ответ сотрудника:
Здравствуйте.
Вероятно, проект по ошибке подключен к версии 2.7, так как в директории Вашего аккаунта также присутствуют файлы python 2.7.
Обращаем Ваше внимание, что, к сожалению, анализ и работа с пользовательскими данными выходит за рамки предоставляемой технической поддержки. Для диагностики и решения данной проблемы мы советуем Вам обратиться к разработчику сайта или сторонним специалистам, предоставляющим услуги по оптимизации кода.
В случае возникновения дополнительных вопросов, пожалуйста, обращайтесь.
Мой ответ:
Хорошо, а что мне делать-то? Я хочу сбросить все так, чтобы можно было изменить настройку. Что удалять? В моем проекте не может быть файлов 2.7, у меня вообще на компьютере стоит только 3.4. Значит, дело в файлах, автоматически добавляемых при создании пользователя или вроде того.
Бэкап папки django уже сделал на всякий случай. django - это директория с сайтов
Ответ сотрудника:
Здравствуйте.
Рекомендуем установить и настроить новое виртуальное окружение ( http://timeweb.com/ru/help//pages/viewpage.action?pageId=4358467 ) и запустить проект на нем. Если же наблюдаются проблемы в совместимости кода непосредственно проекта, то Вам стоит обратится к разработчику сайта для получение консультации.
Мой ответ:
Я уже видел эту инструкцию и скачивал модуль.
Сделал следующее:
1)Поставил virtualenv 15.1.0
2) Создал там окружение под Питон 3 (скриншот проверки в консоли:
https://yadi.sk/i/-tsHGCm23G6gBj).
3)Поправил wsgi на следующие пути:
import os, sys
sys.path.append('/home/c/cc54094/django/public_html/site_NL')
sys.path.append('/home/c/cc54094/virtualenv-15.1.0/env-34/lib/python3.4/site-packages/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'project_nl.settings'
import django
django.setup()
#import django.core.handlers.wsgi
#application = django.core.handlers.wsgi.WSGIHandler()
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
application = DjangoWhiteNoise(get_wsgi_application())
Ошибка не исчезла.
На всякий случай уточню - что значит "запустить проект на виртуальном окружении"? Я ведь не могу использовать runserver.
Конечный ответ сотрудника:
Здравствуйте.
Со своей стороны мы предоставляем услуги хостинга: настроенное техническое решение для размещения Ваших сайтов и панель для управления этим решением. Мы понимаем необходимость корректного функционирования Вашего сайта, однако техническая поддержка хостинга не занимается вопросами, связанными с анализом кода сайта пользователя, настройками его CMS, работой программного обеспечения на компьютере пользователя и другими проблемами, возникшими из-за тех или иных действий пользователя или написанного/размещенного пользователем кода.
При создании и размещении сайтов в сети Интернет следует понимать, что в процессе работы могут возникнуть непредвиденные ситуации, которые не связаны с действиями хостинг-провайдера. Причиной данных ситуаций могут быть как уязвимости кода, так и ошибки при его написании или вводе в эксплуатацию. В таком случае Вам необходимо решать проблемы самостоятельно или обратиться к разработчику сайта или сторонним специалистам.
Если при проведении диагностики проблемы выяснится, что она вызвана некорректной или отличной от ожидаемой работой сервисов хостинга, техническая поддержка будет рада Вам помочь.
Updated 17 March 2017, 17:36 by aigin95.