ImportError: cannot import name ‘parse_rule‘ from ‘werkzeug.routing‘ 解决办法

本文解决了一个在Flask项目中遇到的ImportError问题,该问题是由于werkzeug版本更新导致的flask-restx无法正常导入parse_rule函数。解决方案是在依赖配置文件中指定werkzeug的版本。

转自:noerror.net

ImportError: cannot import name 'parse_rule' from 'werkzeug.routing' 解决办法
问题描述
当在其他系统上运行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)
工程依赖配置:

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
解决办法
在requirements.txt中添加:

werkzeug==2.1.2
根因分析
这是由于 parse_rule() 在最新版本的 werkzeug 上被标记为 :internal: 引起的,这会影响 flask-restx(以及许多其他功能,例如 flask-login)。

参考:
https://github.com/maxcountryman/flask-login/issues/686
https://github.com/python-restx/flask-restx/issues/460
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值