gpt4 book ai didi

python - 类型错误 : sequence of byte string values expected, 找到类型 str 的值

转载 作者:太空狗 更新时间:2023-10-29 17:52:55 28 4
gpt4 key购买 nike

我正在尝试使用适用于 Python 3 的 mod_wsgi 运行一个简单的“hello world”应用程序。我正在使用 Fedora 23。这是我的 Apache 虚拟主机配置:

<VirtualHost *:80>
ServerName localhost
ServerAdmin admin@localhost
# ServerAlias foo.localhost
WSGIScriptAlias /headers /home/httpd/localhost/python/headers/wsgi.py
DocumentRoot /home/httpd/localhost/public_html
ErrorLog /home/httpd/localhost/error.log
CustomLog /home/httpd/localhost/requests.log combined
</VirtualHost>

wsgi.py:

def application(environ, start_response):
status = '200 OK'
output = 'Hello World!'

response_headers = [('Content-Type', 'text/plain'),
('Content-Length', str(len(output)))]

start_response(status, response_headers)

return [output]

如果我对 Python 2 使用 mod_wsgi(sudo dnf remove python3-mod_wsgi -y && sudo dnf install mod_wsgi -y && sudo apachectl restart),它工作正常,但是使用 Python 3 时出现 500 内部服务器错误。这是错误日志:

mod_wsgi (pid=899): Exception occurred processing WSGI script '/home/httpd/localhost/python/headers/wsgi.py'.
TypeError: sequence of byte string values expected, value of type str found

更新

str(len(output)) 上使用 encode()(或 encode('utf-8'))不是工作。现在我得到:

Traceback (most recent call last):
File "/home/httpd/localhost/python/headers/wsgi.py", line 8, in application
start_response(status, response_headers)
TypeError: expected unicode object, value of type bytes found

最佳答案

显然变量 output 本身需要有一个字节字符串而不是一个 unicode 字符串。它不仅需要针对 response_headers 进行更改,还需要针对 所有使用 output 的地方 进行更改(因此 str(len(output)))。第 6 行的 encode('utf-8') 不起作用,就像我一直在尝试的那样)。

所以我的解决方案是:

def application(environ, start_response):
status = '200 OK'
output = b'Hello World!'

response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)

return [output]

(根据 Rolbrok 在评论中的建议,我在官方 mod_wsgi 存储库的 one of the tests 中找到了它。)

关于python - 类型错误 : sequence of byte string values expected, 找到类型 str 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34838443/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com