it-swarm.com.de

"RuntimeError: Generator hat StopIteration ausgelöst", wenn ich versuche, die App auszuführen

Ich versuche diesen Code auszuführen:

import web

urls = (
    '/', 'index'
)

if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()

Aber es gibt mir diesen Fehler jedes Mal

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

Ich habe den Code eines anderen ausprobiert und genau das Gleiche ist passiert. Zusätzlich habe ich versucht, web.py neu zu installieren (experimentell), aber es hat immer noch nicht funktioniert.

25
no4syn

Nach den Dateipfaden zu urteilen, sieht es so aus, als würden Sie Python 3.7. Wenn ja, werden Sie vom New-in-3.7-Verhalten erwischt hier beschrieben :

PEP 479 ist für den gesamten Code in Python 3.7 aktiviert. Dies bedeutet, dass StopIteration-Ausnahmen, die direkt oder indirekt in Coroutinen und Generatoren ausgelöst werden, in RuntimeError-Ausnahmen umgewandelt werden. (Beigetragen von Yury Selivanov in bpo-32670.)

Vor dieser Änderung hat ein StopIteration, der von einem Generator ausgelöst wurde oder diesen durchläuft, einfach die Nutzungsdauer des Generators beendet (die Ausnahme wurde stillschweigend verschluckt). Das von Ihnen verwendete Modul muss neu codiert werden, damit es mit 3.7 wie vorgesehen funktioniert.

Die Chancen stehen gut, dass sie sich ändern müssen:

yield next(seq)

zu:

try:
    yield next(seq)
except StopIteration:
    return
38
Tim Peters

Während meines kürzlichen Selbstlernens in Python musste ich Web.py für einen Kurs installieren, und ich bekam diesen Fehler und wie in einer der Antworten angegeben, musste es aktualisiert werden, um mit Python 3.7 kompatibel zu sein .

Ich habe das Paket mit pip3 install web.py==0.40-dev1 Installiert und bin auf diesen Fehler gestoßen und habe im Web nach einer Lösung gesucht.

Ich habe in webpy git gesucht und die Datei utils.py gefunden, die in https://github.com/ webpy/webpy/tree/master/web , lud es herunter und ersetzte damit den Ordner, der sich in meinem Lib/site-packages/web-Ordner befand (ich bin ein Windows-Benutzer), und es funktionierte einfach.

Hoffe das hilft jemandem.

2
Leo Gomez

Sie haben dieses Problem behoben, deinstallieren Sie einfach Ihr aktuelles web.py Version und ich habe einen Fehler beim Ausführen von pip install web.py von windows 10. Also starte ich den pip install -e git+https://github.com/webpy/webpy.git#Egg=webpy Befehl, um die neueste Version aus dem Zweig master abzurufen. Dies wird nicht ausgeführt RuntimeError: generator raised StopIteration Fehler als Frage erwähnt.

0