python-restx / flask-restx

Fork of Flask-RESTPlus: Fully featured framework for fast, easy and documented API development with Flask

Home Page:https://flask-restx.readthedocs.io/en/latest/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ModuleNotFoundError: No module named 'flask.scaffold'

tumluliu opened this issue · comments

commented

Code

as from the official doc

from flask import Flask
from flask_restx import Resource, Api

app = Flask(__name__)
api = Api(app)

@api.route('/hello')
class HelloWorld(Resource):
    def get(self):
        return {'hello': 'world'}

if __name__ == '__main__':
    app.run(debug=True)

Repro Steps (if applicable)

  1. init a new python project with poetry with poetry new flask-restx-test
  2. enter the dir and poetry add flask-restx
  3. copy and paste the minimal API sample code into app.py
  4. enter the venv with poetry shell
  5. launch the app.py with python app.py

Expected Behavior

the app should be up and running

Actual Behavior

error

Error Messages/Stack Trace

error with:

Traceback (most recent call last):
  File "$HOME/.cache/pypoetry/virtualenvs/flask-restx-test-gvqPH5Xl-py3.10/lib/python3.10/site-packages/flask_restx/api.py", line 18, in <module>
    from flask.helpers import _endpoint_from_view_func
ImportError: cannot import name '_endpoint_from_view_func' from 'flask.helpers' ($HOME/.cache/pypoetry/virtualenvs/flask-restx-test-gvqPH5Xl-py3.10/lib/python3.10/site-packages/flask/helpers.py)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "$HOME/projects/flask-restx-test/app.py", line 2, in <module>
    from flask_restx import Resource, Api
  File "$HOME/.cache/pypoetry/virtualenvs/flask-restx-test-gvqPH5Xl-py3.10/lib/python3.10/site-packages/flask_restx/__init__.py", line 2, in <module>
    from .api import Api  # noqa
  File "$HOME/.cache/pypoetry/virtualenvs/flask-restx-test-gvqPH5Xl-py3.10/lib/python3.10/site-packages/flask_restx/api.py", line 20, in <module>
    from flask.scaffold import _endpoint_from_view_func
ModuleNotFoundError: No module named 'flask.scaffold'

Environment

  • Python version: 3.10.11
  • Flask version: 3.0.0
  • Flask-RESTX version: 1.1.0
  • Other installed Flask extensions: none

Additional Context

nothing else as this is the minimal sample. Could it be caused by some incompatibility?

same here

from flask 3.0.0, the scaffold module was moved to sansio.scaffold
This bug can be fixed by replacing flask.scaffold with flask.sansio.scaffold on the line between 17 and 20 in the flask_restx/api.py

try:
    from flask.helpers import _endpoint_from_view_func
except ImportError:
    from flask.sansio.scaffold import _endpoint_from_view_func

Hi @tumluliu ,
in Scripts\Lib\site-packages\flask_restx\api.py
In line number 20 , I made following changes,
from flask.sansio.scaffold import _endpoint_from_view_func

commented

from flask 3.0.0, the scaffold module was moved to sansio.scaffold This bug can be fixed by replacing flask.scaffold with flask.sansio.scaffold on the line between 17 and 20 in the flask_restx/api.py

try:
    from flask.helpers import _endpoint_from_view_func
except ImportError:
    from flask.sansio.scaffold import _endpoint_from_view_func

Thanks @vkdnjznd ! Worked like a charm. So I assume this would be included in 1.1.1 as a bugfix?

I just tested this project and found out that we may be blocked by pytest-dev/pytest-flask#167 before we could support Flask 3.0.0 in this project.

Confirmed. I am working on patch for missing import.

commented

also getting this error

Python version: 3.9
Flask version: 1.1.2
Flask-RESTX version: 1.1.0

Note: If you really need hot-fix consider temporal use of restx-monkey. I put stuff there same as suggesting pull requests here in flask-restx. Hot patcher restx-monkey is in standard pipy repo.

Pyhton = 3.10.12
flask == 3.0.0
flask_restx == 0.5

Facing the similar issue.
File "/home/USERNAME/devnet/.venv/lib/python3.10/site-packages/flask_restx/api.py", line 23, in
from flask.scaffold import _endpoint_from_view_func
ModuleNotFoundError: No module named 'flask.scaffold'

It's working after modifying the line No 23 on file:
/home/USER/venv/lib/python3.10/site-packages/flask_restx/api.py

Before
from flask.scaffold import _endpoint_from_view_func

Now
from flask.sansio.scaffold import _endpoint_from_view_func