2022-12-12

flask

python

Posted by

applemango

ModuleNotFoundError

Traceback (most recent call last):
  File "A:\abc\osaka\main\api\app.py", line 1, in <module>
    import flask
ModuleNotFoundError: No module named 'flask'

これはflaskに限った事ではないですが、モジュールをインストールしていない事で起きるエラーです

解決策はモジュールをインストールする、それだけです

例えばimport flask_corsでエラーが出たならpip install flask_corsと、大抵インポートするモジュールの名前でインストールできます

(venv) A:\abc\osaka\main\api>pip install flask_cors

errorが出る場合はここで調べるとほぼ確実に一番上に出てきます

RuntimeError: Working outside of application context.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "A:\abc\osaka\main\api\venv\lib\site-packages\flask_sqlalchemy\extension.py", line 885, in drop_all
    self._call_for_binds(bind_key, "drop_all")
  File "A:\abc\osaka\main\api\venv\lib\site-packages\flask_sqlalchemy\extension.py", line 839, in _call_for_binds
    engine = self.engines[key]
  File "A:\abc\osaka\main\api\venv\lib\site-packages\flask_sqlalchemy\extension.py", line 628, in engines
    app = current_app._get_current_object()  # type: ignore[attr-defined]
  File "A:\abc\osaka\main\api\venv\lib\site-packages\werkzeug\local.py", line 513, in _get_current_object
    raise RuntimeError(unbound_message) from None
RuntimeError: Working outside of application context.

This typically means that you attempted to use functionality that needed
the current application. To solve this, set up an application context
with app.app_context(). See the documentation for more information.

flask-SQLAlchemyを使用してエラーが出た場合はflask-SQLAlchemyのバージョンが原因です

解決策はバージョンを戻すことです

(venv) A:\abc\osaka\main\api>pip install Flask-SQLAlchemy==2.5.1

AttributeError: module 'sqlalchemy' has no attribute 'all'. Did you mean: 'file'?

>>> from app import db
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/abc/osaka/main/api/app.py", line 18, in <module>
    db = SQLAlchemy(app) # dbの作成
         ^^^^^^^^^^^^^^^
  File "/abc/osaka/main/api/venv/lib/python3.11/site-packages/flask_sqlalchemy/__init__.py", line 758, in __init__
    _include_sqlalchemy(self, query_class)
  File "/abc/osaka/main/api/venv/lib/python3.11/site-packages/flask_sqlalchemy/__init__.py", line 112, in _include_sqlalchemy
    for key in module.__all__:
               ^^^^^^^^^^^^^^
AttributeError: module 'sqlalchemy' has no attribute '__all__'. Did you mean: '__file__'?

これはsqlalchemyのversionが原因です

出た場合は下記のコマンドを実行してみてください

(venv) A:\abc\osaka\main\api>pip install SQLAlchemy==1.4.41
(venv) apple@apple api % pip install SQLAlchemy==1.4.41

CORS ERROR

Access to XMLHttpRequest at 'http://127.0.0.1:5000/' from origin 'http://127.0.0.1:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
AxiosError: Network Error
    at XMLHttpRequest.handleError (webpack-internal:///./node_modules/axios/lib/adapters/xhr.js:168:14)

これはcorsが原因で起きるエラーです、corsを設定することで回避できます

一番簡単な例をしたに載せます

(venv) A:\abc\osaka\main\api>pip install flask_cors
from flask_cors import CORS, cross_origin

app = Flask(__name__)
cors = CORS(app, responses={r"/*": {"origins": "*"}})

このドキュメントどう?

emoji
emoji
emoji
emoji