我尝试在Python 3.7中运行以下代码:
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(实验),但它仍然没有工作。
7条答案
按热度按时间wlzqhblo1#
他们修复了这个问题,只需卸载您当前的
web.py
版本,我在从windows 10
运行pip install web.py
时遇到错误。因此,我运行pip install -e git+https://github.com/webpy/webpy.git#egg=webpy
命令从master
分支获取最新版本。这将不会执行RuntimeError: generator raised StopIteration
错误的问题提到。w41d8nur2#
这应该在#577中修复:https://github.com/webpy/webpy/pull/577
cl25kdpy3#
我在下面的命令中也遇到了同样的问题
当我升级pytest版本时解决了错误
nle07wnf4#
从文件路径判断,看起来您运行的是Python 3.7。如果是这样的话,你会被3.7中的新行为抓住:
PEP 479对Python 3.7中的所有代码都启用,这意味着在协同程序和生成器中直接或间接引发的StopIteration异常将被转换为RuntimeError异常。(由Yury Selivanov在bpo-32670中贡献。
在此更改之前,由生成器引发或通过生成器的
StopIteration
简单地结束了生成器的使用寿命(异常被默默地吞下)。您正在使用的模块必须重新编码,才能在3.7中正常工作。他们可能需要改变:
收件人:
cnjp1d6j5#
因此,在我最近自学Python的过程中,一门课程要求我安装Web.py,我得到了这个错误,正如其中一个答案所说,它必须更新以兼容Python 3.7。
我用
pip3 install web.py==0.40-dev1
安装了这个软件包,遇到了这个错误,并开始在网上搜索解决方案。我所做的就是搜索webpy git,找到https://github.com/webpy/webpy/tree/master/web中更新的utils.py文件,下载它,并用它替换我的Lib/site-packages/web文件夹中的文件(我是Windows用户),它就工作了。
希望这能帮助到某人。
nimxete26#
我的解决方案是升级这些点子
mongoengine
从0.14.0
到0.19.1
,flask-mongoengine
到0.9.5
成功了
but5z9lq7#
到目前为止,大多数主要的软件包都已经修复了这个问题,但是有一个主要的软件包没有修复,那就是clips/pattern project。它自2018年8月以来一直没有更新,因此从未收到修复。
由于这是“python pattern stopiteration”的最高Google结果,这里有一个解决方案:
基本上,与模式相关的代码只会在第一次运行时失败,因此您首先需要运行它一次并捕获它抛出的Exception。
它在我自己的脚本中运行得很好,但我不知道它是否修复了所有可能的问题。
理想情况下,应该有人分叉clips/pattern项目,因为它不再被维护。