python-3.x “运行时间错误:每次我尝试运行应用程序时,生成器都会引发StopIteration”

wswtfjt7  于 2023-10-21  发布在  Python
关注(0)|答案(7)|浏览(170)

我尝试在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(实验),但它仍然没有工作。

wlzqhblo

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错误的问题提到。

cl25kdpy

cl25kdpy3#

我在下面的命令中也遇到了同样的问题

python setup.py test

当我升级pytest版本时解决了错误

pip uninstall pytest
pip install pytest
nle07wnf

nle07wnf4#

从文件路径判断,看起来您运行的是Python 3.7。如果是这样的话,你会被3.7中的新行为抓住:
PEP 479对Python 3.7中的所有代码都启用,这意味着在协同程序和生成器中直接或间接引发的StopIteration异常将被转换为RuntimeError异常。(由Yury Selivanov在bpo-32670中贡献。
在此更改之前,由生成器引发或通过生成器的StopIteration简单地结束了生成器的使用寿命(异常被默默地吞下)。您正在使用的模块必须重新编码,才能在3.7中正常工作。
他们可能需要改变:

yield next(seq)

收件人:

try:
    yield next(seq)
except StopIteration:
    return
cnjp1d6j

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用户),它就工作了。
希望这能帮助到某人。

nimxete2

nimxete26#

我的解决方案是升级这些点子
mongoengine0.14.00.19.1
flask-mongoengine0.9.5
成功了

but5z9lq

but5z9lq7#

到目前为止,大多数主要的软件包都已经修复了这个问题,但是有一个主要的软件包没有修复,那就是clips/pattern project。它自2018年8月以来一直没有更新,因此从未收到修复。
由于这是“python pattern stopiteration”的最高Google结果,这里有一个解决方案:

def pattern_stopiteration_workaround():
    try:
        print(lexeme('gave'))
    except:
        pass

def main():
    pattern_stopiteration_workaround()
    #Add your other code here

基本上,与模式相关的代码只会在第一次运行时失败,因此您首先需要运行它一次并捕获它抛出的Exception。
它在我自己的脚本中运行得很好,但我不知道它是否修复了所有可能的问题。
理想情况下,应该有人分叉clips/pattern项目,因为它不再被维护。

相关问题