Werkzeug: ast.Module signature change en Python 3.8.0a3 causa TypeError

Creado en 19 may. 2019  ·  7Comentarios  ·  Fuente: pallets/werkzeug

Con Python 3.8.0a3 y Werkzeug 0.15.4, la compilación de los constructores de reglas genera TypeError: required field "type_ignores" missing from Module . Parece que ast.Module tiene un nuevo argumento requerido.

Creo que este es el mismo problema que 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
bug

Comentario más útil

Se corrigió en una versión posterior. Actualice su versión de Werkzeug.

Todos 7 comentarios

Esto debe notificarse a CPython como un cambio de API no documentado e incompatible con versiones anteriores en la biblioteca estándar.

@asottile ¿Qué piensas? No estoy seguro de que debamos solucionar esto todavía, Python 3.8 ha estado causando y luego solucionando problemas aleatorios durante bastante tiempo.

Parece que esto se informó en CPython https://bugs.python.org/issue35894 y la resolución fue que el código posterior debería agregar un if sys.version_info >= (3, 8) . : no divertido:

😡 ¡Qué resolución más loca! ¡Haré una solución más portátil para esto, próximamente!

Gracias por la rápida respuesta a este y muchos otros problemas. Se ha lanzado Python 3.8.0 final. ¿Podemos obtener una versión de Werkzeug 0.15.5?

¿Alguien tiene una solución para este problema?

Se corrigió en una versión posterior. Actualice su versión de Werkzeug.

¿Fue útil esta página
0 / 5 - 0 calificaciones