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
CodePudding user response:
This is caused by parse_rule()
being marked as :internal:
on the latest release of werkzeug
which impacts flask-restx
(plus many others such as flask-login
).
https://github.com/python-restx/flask-restx/issues/460 is open for flask-restx
, https://github.com/maxcountryman/flask-login/issues/686 for flask-login
.
As you've mentioned, pinning to an older version is the workaround for now (i.e. werkzeug==2.1.2
).
CodePudding user response:
The solution (workaround) was that I additionally included werkzeug in the version 2.1.2 in the requirements.txt
werkzeug==2.1.2
more information at https://issuemode.com/issues/apache/airflow/111093941#answer-108883148
After that I could start the Flask application.