Werkzeug: La modification de la signature ast.Module dans Python 3.8.0a3 provoque une erreur TypeError

Créé le 19 mai 2019  ·  7Commentaires  ·  Source: pallets/werkzeug

Avec Python 3.8.0a3 et Werkzeug 0.15.4, la compilation des générateurs de règles provoque TypeError: required field "type_ignores" missing from Module . Il semble que ast.Module a un nouvel argument obligatoire.

Je pense que c'est le même problème 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

Commentaire le plus utile

Il a été corrigé dans une version ultérieure. Mettez à niveau votre version de Werkzeug.

Tous les 7 commentaires

Cela doit être signalé à CPython comme un changement d'API non documenté et incompatible avec les versions antérieures dans la bibliothèque standard.

@asottile Que

On dirait que cela a été signalé dans CPython https://bugs.python.org/issue35894 et la résolution était que le code en aval devrait ajouter un if sys.version_info >= (3, 8) . : non amusé:

😡 quelle résolution farfelue - je vais faire une solution plus portable pour cela, à venir!

Merci pour le redressement rapide de ce problème et de nombreux autres. Python 3.8.0 final a été publié. Pouvons-nous obtenir une version Werkzeug 0.15.5?

Quelqu'un at-il une solution de contournement pour ce problème?

Il a été corrigé dans une version ultérieure. Mettez à niveau votre version de Werkzeug.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

mrx23dot picture mrx23dot  ·  6Commentaires

davidism picture davidism  ·  9Commentaires

SimonSapin picture SimonSapin  ·  12Commentaires

sorenh picture sorenh  ·  4Commentaires

masklinn picture masklinn  ·  11Commentaires