PasteDeploy выдает TypeError при использовании с uwsgi
Я пытаюсь использовать опцию --paste uwsgi для обслуживания приложения пирамиды, но PasteDeploy выдает ошибку TypeError (я полагаю, из Python3)
File "/home/admin/.mozaiqu.es.env/lib/python3.2/site-packages/paste/deploy/loadwsgi.py", line 277, in loadcontext
if '#' in uri:
TypeError: Type str doesn't support the buffer API
Команда, которую я использую:
uwsgi --paste development.ini --socket :3031 -H /home/admin/.mozaiqu.es.env
Я думал, что PasteDeploy и uwsgi были дружественными по отношению к Python3, не так ли?
Я делаю что-то неправильно?
2 ответа
Я только что столкнулся с той же проблемой в Python 3.2. Я временно решил проблему, добавив следующее к loadcontext
из loadwsgi.py
:
if isinstance(uri, bytes):
uri = uri.decode('utf-8')
Вот дополнение с небольшим контекстом:
def loadcontext(object_type, uri, name=None, relative_to=None,
global_conf=None):
if isinstance(uri, bytes):
uri = uri.decode('utf-8')
if '#' in uri:
if name is None:
uri, name = uri.split('#', 1)
else:
# @@: Ignore fragment or error?
uri = uri.split('#', 1)[0]
См. Python 3.0 urllib.parse ошибка "Тип str не поддерживает буфер API"
Это объясняет вашу ошибку, просто в другом контексте. Ошибка в основном ошибка в Python 3.x. Существует проблема в сетке между байтовыми строками и строками Юникода, поэтому для этого возникает несколько ошибок. Первый ответ в посте выше объясняет это с большей ясностью.