1

我正在尝试使用 uwsgi 的 --paste 选项来为金字塔应用程序提供服务,但是 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 很友好,不是吗?

难道我做错了什么 ?

4

2 回答 2

2

我刚刚在 python 3.2 中遇到了同样的问题。loadcontext我通过在of 中添加以下内容暂时解决了该问题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]
于 2012-07-27T00:14:41.733 回答
1

请参阅Python 3.0 urllib.parse 错误“类型 str 不支持缓冲区 API”

它解释了您遇到的错误,只是在不同的上下文中。该错误基本上是python 3.x中的一个错误。字节字符串和 unicode 字符串之间的网格存在问题,因此会出现几个错误。上面帖子中的第一个答案更清楚地解释了它。

于 2012-07-04T16:56:17.780 回答