Werkzeug: python 3.8.0a3中的ast.Module签名更改导致TypeError

创建于 2019-05-19  ·  7评论  ·  资料来源: pallets/werkzeug

使用Python 3.8.0a3和Werkzeug 0.15.4,编译规则构建器将导致TypeError: required field "type_ignores" missing from Module 。 听起来ast.Module有一个新的必填参数。

我认为这是与https://github.com/beetbox/beets/issues/3201#issuecomment -478341869相同的问题

flask run
 * Serving Flask app "flask_test.py"
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
Traceback (most recent call last):
  File "d:\tool\python\38\lib\runpy.py", line 192, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "d:\tool\python\38\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "d:\tool\python\38\Scripts\flask.exe\__main__.py", line 9, in <module>
  File "d:\tool\python\38\lib\site-packages\flask\cli.py", line 906, in main
    cli.main(args=args, prog_name=name)
  File "d:\tool\python\38\lib\site-packages\flask\cli.py", line 569, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  File "d:\tool\python\38\lib\site-packages\click\core.py", line 717, in main
    rv = self.invoke(ctx)
  File "d:\tool\python\38\lib\site-packages\click\core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "d:\tool\python\38\lib\site-packages\click\core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "d:\tool\python\38\lib\site-packages\click\core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "d:\tool\python\38\lib\site-packages\click\decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "d:\tool\python\38\lib\site-packages\click\core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "d:\tool\python\38\lib\site-packages\flask\cli.py", line 779, in run_command
    app = DispatchingApp(info.load_app, use_eager_loading=eager_loading)
  File "d:\tool\python\38\lib\site-packages\flask\cli.py", line 300, in __init__
    self._load_unlocked()
  File "d:\tool\python\38\lib\site-packages\flask\cli.py", line 324, in _load_unlocked
    self._app = rv = self.loader()
  File "d:\tool\python\38\lib\site-packages\flask\cli.py", line 381, in load_app
    app = locate_app(self, import_name, name)
  File "d:\tool\python\38\lib\site-packages\flask\cli.py", line 236, in locate_app
    __import__(module_name)
  File "D:\flask_test.py", line 3, in <module>
    app = Flask(__name__)
  File "d:\tool\python\38\lib\site-packages\flask\app.py", line 559, in __init__
    self.add_url_rule(
  File "d:\tool\python\38\lib\site-packages\flask\app.py", line 67, in wrapper_func
    return f(self, *args, **kwargs)
  File "d:\tool\python\38\lib\site-packages\flask\app.py", line 1217, in add_url_rule
    self.url_map.add(rule)
  File "d:\tool\python\38\lib\site-packages\werkzeug\routing.py", line 1388, in add
    rule.bind(self)
  File "d:\tool\python\38\lib\site-packages\werkzeug\routing.py", line 730, in bind
    self.compile()
  File "d:\tool\python\38\lib\site-packages\werkzeug\routing.py", line 794, in compile
    self._build = self._compile_builder(False).__get__(self, None)
  File "d:\tool\python\38\lib\site-packages\werkzeug\routing.py", line 951, in _compile_builder
    code = compile(module, "<werkzeug routing>", "exec")
TypeError: required field "type_ignores" missing from Module

最有用的评论

它已在后续版本中修复。 升级您的Werkzeug版本。

所有7条评论

这需要作为标准库中未记录且向后不兼容的API更改报告给CPython。

@asottile您有什么想法? 我不确定我们是否应该解决此问题,Python 3.8导致了一段时间后解决了随机问题。

看起来这是在CPython https://bugs.python.org/issue35894中报告的,解决方案是下游代码应添加if sys.version_info >= (3, 8) 。 :不开心:

resolution真是个古怪的解决方案-我将为此提供更便捷的解决方案!

感谢您快速解决此问题以及其他许多问题。 Python 3.8.0 final已发布。 我们可以获取Werkzeug 0.15.5版本吗?

有没有人解决此问题?

它已在后续版本中修复。 升级您的Werkzeug版本。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

golf-player picture golf-player  ·  10评论

mhelmetag picture mhelmetag  ·  8评论

caiz picture caiz  ·  3评论

lepture picture lepture  ·  6评论

davidism picture davidism  ·  9评论