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. Существует проблема в сетке между байтовыми строками и строками Юникода, поэтому для этого возникает несколько ошибок. Первый ответ в посте выше объясняет это с большей ясностью.

Другие вопросы по тегам