私はこのコードを実行しようとしています:
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(実験的)を再インストールしようとしましたが、まだ動作しませんでした。
ファイルパスから判断すると、Python 3.7を実行しているように見えます。もしそうなら、あなたは3.7の新動作に捕らわれている ここで説明 :
PEP 479はPython 3.7のすべてのコードで有効になっています。つまり、コルーチンおよびジェネレーターで直接または間接的に発生したStopIteration例外はRuntimeError例外に変換されます。 (bpo-32670でYury Selivanovによって寄贈されました。)
この変更の前は、ジェネレーターによって発生または通過するStopIteration
は、ジェネレーターの耐用年数を単に終了させました(例外は黙って飲み込まれました)。使用しているモジュールは、3.7で意図したとおりに動作するようにコーディングし直す必要があります。
変更する必要がある可能性があります。
yield next(seq)
に:
try:
yield next(seq)
except StopIteration:
return
そのため、最近のPythonの自己学習中に、コースでWeb.pyをインストールする必要があり、このエラーが発生しました。答えの1つとして、Python 3.7と互換性があるように更新する必要がありました。
pip3 install web.py==0.40-dev1
を含むパッケージをインストールすると、このエラーが発生し、Webでソリューションを検索し始めました。
私がやったのは、webpy gitを検索して、 https://github.com/で最近のものであったutils.pyファイルを見つけることでしたwebpy/webpy/tree/master/web をダウンロードし、それを使用してLib/site-packages/webフォルダー(私はWindowsユーザーです)にあるものを置き換え、それが機能しました。
これが誰かを助けることを願っています。
彼らはこの問題を修正し、現在のweb.py
バージョンをアンインストールするだけで、pip install web.py
からwindows 10
を実行するとエラーが発生しました。そこで、pip install -e git+https://github.com/webpy/webpy.git#Egg=webpy
コマンドを実行して、master
ブランチから最新バージョンを取得します。質問にあるように、これはRuntimeError: generator raised StopIteration
エラーを実行しません。