gpt4 book ai didi

python - Python 中的 sys.stdin None 什么时候出现?

转载 作者:行者123 更新时间:2023-11-28 16:42:28 26 4
gpt4 key购买 nike

我正在尝试通过 IIS 将 Flask 作为简单的 CGI 应用程序运行。

我有以下代码:

from wsgiref.handlers import CGIHandler
from flask import Flask
app = Flask(__name__)

@app.route('/')
def main():
return 'Woo woo!'

CGIHandler().run(app)

我在 Windows 上运行 Python 3.3。我收到以下错误:

File "C:\Python33\lib\wsgiref\handlers.py", 
line 509, in __init__(self, sys.stdin.buffer, sys.stdout.buffer, sys.stderr, )
AttributeError: 'NoneType' object has no attribute 'buffer' ".

我添加了一些日志记录代码,结果发现 sys.stdinNone

Python 作为 CGI Handler 添加到 IIS,如下所示:

Request path: *.py
Executable: C:\Windows\py.exe -3 %s %s

那么,为什么 sys.stdin 为 None,我该如何解决?

编辑

看起来 sys.stdin 是 None 因为 file descriptor is invalid .

最佳答案

很有趣。你已经回答了你自己问题的一半。另一半(“我如何修复它”)很简单,只需打开一些合适的东西(os.devnull 是显而易见的)并设置 sys.stdin 指向那里。您还需要执行 sys.stdout 和 sys.stderr,大概是这样的:

import os, sys
for _name in ('stdin', 'stdout', 'stderr'):
if getattr(sys, _name) is None:
setattr(sys, _name, open(os.devnull, 'r' if _name == 'stdin' else 'w'))
del _name # clean up this module's name space a little (optional)
from wsgiref.handlers ...

应该可以解决问题。

关于python - Python 中的 sys.stdin None 什么时候出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17458728/

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