ImportError:无法从“werkzeug.routing”导入名称“parse_rule”

Chs*_*bie 40 python werkzeug flask flask-restx

在另一个系统上运行 Flask 项目后,我收到以下消息。该应用程序一直运行没有问题:

Error: While importing 'app', an ImportError was raised:

Traceback (most recent call last):
  File "c:\users\User\appdata\local\programs\python\python39\lib\site-packages\flask\cli.py", line 214, in locate_app
    __import__(module_name)
  File "C:\Users\User\Desktop\Projekt\app\__init__.py", line 3, in <module>
    from flask_restx import Namespace, Api
  File "c:\users\User\appdata\local\programs\python\python39\lib\site-packages\flask_restx\__init__.py", line 5, in <module>
  File "c:\users\User\appdata\local\programs\python\python39\lib\site-packages\flask_restx\api.py", line 50, in <module>
    from .swagger import Swagger
  File "c:\users\User\appdata\local\programs\python\python39\lib\site-packages\flask_restx\swagger.py", line 18, in <module>
    from werkzeug.routing import parse_rule
ImportError: cannot import name 'parse_rule' from 'werkzeug.routing' (c:\users\User\appdata\local\programs\python\python39\lib\site-packages\werkzeug\routing\__i
nit__.py)
Run Code Online (Sandbox Code Playgroud)

我的要求.txt

Flask~=2.1.2
psycopg2-binary==2.9.3
Flask-SQLAlchemy==2.5.1
flask-restx==0.5.1
qrcode~=7.3.1
PyPDF2==2.6.0
reportlab~=3.6.10
WTForms~=3.0.1
flask-bootstrap==3.3.7.1
flask-wtf==1.0.1
Run Code Online (Sandbox Code Playgroud)

Chs*_*bie 38

我现在使用的解决方法是将 werkzeug 固定到 2.1.2 中requirements.txt。仅应在其他库与最新版本的 Werkzeug 兼容之前执行此操作,此时应更新引脚。

werkzeug==2.1.2
Run Code Online (Sandbox Code Playgroud)


saf*_*afe 26

更新:此问题现已修复,您应该使用 1.0.3 或更高版本flask-restx

原始:这是由于在其影响的最新版本上parse_rule()被标记为(以及许多其他影响,例如)而引起的。:internal:werkzeugflask-restxflask-login

https://github.com/python-restx/flask-restx/issues/460开放给flask-restxhttps://github.com/maxcountryman/flask-login/issues/686开放给flask-login

正如您所提到的,固定到旧版本是目前的解决方法(即werkzeug==2.1.2)。


Tan*_*ips 10

从 github 问题复制到这里供找到此问题的人使用。如果您与 Flask 一起使用并尝试降级到 Werkzeug 2.1.2,您将收到错误,因为 Flask 需要 Werkzeug 的 2.2.x。您将需要降级 Flask 以及以下内容:

Werkzeug <= 2.1.2   
flask == 2.1.2   
flask-restx >= 0.5.1  
Run Code Online (Sandbox Code Playgroud)