ImportError: cannot import name 'parse_rule' from 'werkzeug.routing'

Viewed 8038

I got the following message after running my Flask project on another system. The application ran all the time without problems:

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)

My requirements.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
4 Answers

Copying here from the github issue for those who find this. If you are using with Flask and try to downgrade to Werkzeug 2.1.2 you will get an error because flask wants 2.2.x from Werkzeug. You will need to downgrade flask as well as follows:

Werkzeug <= 2.1.2   
flask == 2.1.2   
flask-restx >= 0.5.1  

This Issue is come from latest version of flask. Based on most suggestions Flask was downgraded to v2.1.2. The latest version of Flask requires Werkzeug >=2.2.0 but Flask v2.1.2 requires Werkzeug >=2.0. Therefore Werkzeug was downgraded to v2.1.2. I executed following commands because I used pipenv for dependency management.

pipenv install Flask==2.1.2
pipenv install Werkzeug==2.1.2

if someone using pip3 just execute following:

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

After downgrading my Pipfile looks as follows:

[packages]
flask = "==2.1.2"
werkzeug = "==2.1.2"

Hope it will solve you issues!

Related