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

问题描述 投票:0回答:4

在另一个系统上运行 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)

我的要求.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
python flask werkzeug flask-restx
4个回答
38
投票

我现在使用的解决方法是将 werkzeug 固定到

requirements.txt
中的 2.1.2。仅应在其他库与最新版本的 Werkzeug 兼容之前执行此操作,此时应更新引脚。

werkzeug==2.1.2

25
投票

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

flask-restx

原始: 这是由于

parse_rule()
在最新版本的
:internal:
上被标记为
werkzeug
造成的,这会影响
flask-restx
(以及许多其他内容,例如
flask-login
)。

https://github.com/python-restx/flask-restx/issues/460

flask-restx
开放,https://github.com/maxcountryman/flask-login/issues/686
开放flask-login

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

werkzeug==2.1.2
)。


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  

2
投票

此问题来自最新版本的flask。根据大多数建议,Flask 被降级为

v2.1.2
。 Flask 的最新版本需要 Werkzeug >=
2.2.0
,但 Flask
v2.1.2
需要 Werkzeug >=
2.0
。因此 Werkzeug 被降级为
v2.1.2

如果您使用

pip
,只需使用终端安装以下版本:

pip3 install Flask==2.1.2
pip3 install Werkzeug==2.1.2

希望能解决您的问题!

© www.soinside.com 2019 - 2024. All rights reserved.