python - 每次我尝试运行应用程序时都会出现“RuntimeError:生成器引发 StopIteration”
问题描述
我正在尝试运行此代码:
import web
urls = (
'/', 'index'
)
if __name__ == "__main__":
app = web.application(urls, globals())
app.run()
但它每次都给我这个错误
C:\Users\aidke\Desktop>python app.py
Traceback (most recent call last):
File "C:\Users\aidke\AppData\Local\Programs\Python\Python37-32\lib\site-packages\web\utils.py", line 526, in take
yield next(seq)
StopIteration
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "app.py", line 14, in <module>
app = web.application(urls, globals())
File "C:\Users\aidke\AppData\Local\Programs\Python\Python37-32\lib\site-packages\web\application.py", line 62, in __init__
self.init_mapping(mapping)
File "C:\Users\aidke\AppData\Local\Programs\Python\Python37-32\lib\site-packages\web\application.py", line 130, in init_mapping
self.mapping = list(utils.group(mapping, 2))
File "C:\Users\aidke\AppData\Local\Programs\Python\Python37-32\lib\site-packages\web\utils.py", line 531, in group
x = list(take(seq, size))
RuntimeError: generator raised StopIteration
我尝试了其他人的代码,并且发生了完全相同的事情。此外,我尝试重新安装 web.py(experimental),但仍然无法正常工作。
解决方案
从文件路径判断,看起来您正在运行 Python 3.7。如果是这样,您将被新的 3.7 行为所吸引:
PEP 479 已为 Python 3.7 中的所有代码启用,这意味着在协程和生成器中直接或间接引发的 StopIteration 异常将转换为 RuntimeError 异常。(由 Yury Selivanov 在 bpo-32670 中贡献。)
在此更改之前,aStopIteration
通过或通过,生成器简单地结束了生成器的使用寿命(异常被默默吞下)。您正在使用的模块必须重新编码才能按 3.7 的预期工作。
他们可能需要改变:
yield next(seq)
至:
try:
yield next(seq)
except StopIteration:
return
推荐阅读
- kubernetes - 无法访问 Kubernetes 集群的仪表板
- haskell - 如何定义一个组合了几个原始后端的 Diagrams 后端
- python - 在 Python 程序中启动一个非常复杂的命令
- c++ - C++ 关于 unsigned long long
- python - 我使用 pyinstaller 来打包我的 python 文件。为什么'import pymssql'总是出错
- python - Python 中的 Go 结构标签
- mysql - MySQL group by 不起作用
- javascript - 调用不带“this”前缀的对象方法
- react-native - React Native Ios:Native Module 不能为空
- cobol - 使用 cobol 检查两个日期之间的数据