Tried running a file with the following imports:
from flask_sqlalchemy import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.orm import scoped_session, sessionmaker Received the following error:
ImportError: No module named 'flask_sqlalchemy' SQLAlchemy is installed. Still, I tried to reinstall into the directory in which it will be used. I got this:
The directory '/Users/_/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. The directory '/Users/_/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. Requirement already satisfied: Flask-SQLAlchemy in /Library/Python/2.7/site-packages (2.3.2) Requirement already satisfied: Flask>=0.10 in /Library/Python/2.7/site-packages (from Flask-SQLAlchemy) (1.0.2) Requirement already satisfied: SQLAlchemy>=0.8.0 in /Library/Python/2.7/site-packages (from Flask-SQLAlchemy) (1.2.10) Requirement already satisfied: Jinja2>=2.10 in /Library/Python/2.7/site-packages (from Flask>=0.10->Flask-SQLAlchemy) (2.10) Requirement already satisfied: itsdangerous>=0.24 in /Library/Python/2.7/site-packages (from Flask>=0.10->Flask-SQLAlchemy) (0.24) Requirement already satisfied: Werkzeug>=0.14 in /Library/Python/2.7/site-packages (from Flask>=0.10->Flask-SQLAlchemy) (0.14.1) Requirement already satisfied: click>=5.1 in /Library/Python/2.7/site-packages (from Flask>=0.10->Flask-SQLAlchemy) (6.7) Requirement already satisfied: MarkupSafe>=0.23 in /Library/Python/2.7/site-packages (from Jinja2>=2.10->Flask>=0.10->Flask-SQLAlchemy) (1.0) The bit about me not owning the directory is incorrect. I'm the only one on this machine. I own everything.
Anyway, I go back to rerun the file and get the same error message. So, it's installed, but not installed or, at the very least, not available to me.
One error message I saw when I commented out one of the import statements read as follows:
File "/Library/Frameworks/ I have no clue how to fix this and get SQLAlchemy up and running. I've burned over 1.5 hours on it. The last error listed suggests having 2 versions of python may have something to do with it.
Your thoughts on a remedy would be appreciated.
1913 Answers
I think you have a mismatch between your pip and python versions. check your pip version pip --version, if it is pip3
you can try this,
sudo apt-get install python3-sqlalchemy This should work.
~$ python3 >>import sqlalchemy 1Did you install flaskext.sqlalchemy? It looks like you may have only installed the SQLAlchemy package and NOT the Flask Extension. Try pip install Flask-SQLAlchemy
If you are on mac, try pip install flask-sqlalchemy instead of pip3 install flask-sqlalchemy.
It works with some warnings, but was able to succesfully connect to the database and create the tables. "FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True or False to suppress this warning."
1Ultimately, I resolved this issue ages after I posted the above question.
The fix was to run all package updates and installs thru Anaconda and do my work in Spyder.
The lesson learned was simple: Once you start using Anaconda as your go-to environment for all things Python, all updates -- made via conda install or pip -- will be orchestrated and placed in your system by Anaconda by default.
1This issue main occurs when we are run the flask with cmd flask run in the virtual environment
Reason
This happens when run the flask from flask run command
flask-sqlalchemy consider the path of python or python3 rather than virtaul environment installed packages path
Solution
Open new terminalordeactivate virtual environment- install flask-sqlalchemy in global environment
pip install flask-sqlalchemy - Then activate
virtual environmentand run the commandsIn Ubuntu/ Mac
export FLASK_APP=app export FLASK_ENV=development flask runIn Windows
SET FLASK_APP=app SET FLASK_ENV=development flask run
Reason
This happens when run the flask from flask run command in the virtual environment
- Error occurs due to
pip install flaskor installedflaskin globally - When we run
flask run, thepythonorpython3complier first check global package offlaskand if not existflaskthen check in thevirtual environment - If
pythonorpython3detect theflaskin globally thenflaskpackage will import other packages likeSQLAlachemy,Migrate, etc from global packages
Solution
Open
newterminal ordeactivatevirtual environmentuninstall the
flaskin the global packagespip uninstall flaskorpip3 uninstall flaskThen go back to
virtual environmentterminal- Run the flask
flask run
or
- Run the flask
activatevirtual environment and run the commandsIn Ubuntu/ Mac
export FLASK_APP=app export FLASK_ENV=development flask runIn Windows
SET FLASK_APP=app SET FLASK_ENV=development flask run
Possibly it is a pip path issue. If using conda virtual env (with anaconda or miniconda), check which pip and which python in linux (find your pip and python path) and make sure they're aligned. Fix your pip path issue or instead of pip install flask_sqlalchemy do a
<ANACONDA or MINICONDA PATH>/envs/<ENV_NAME>/bin/pip install flask_sqlalchemy in order to install the package in the correct place.
It's quite likely that you might have installed the particular project in a virtual environment but then forgot to assign the venv intepreter as your project's intepreter. If you're using pycharm, go to File > Settings > Project Intepreter, and select the correct intepreter for your project from the dropdown list.
The window would also show you all the packages installed on that particular intepreter so you can confirm that you have actually installed SQLAlchemy.
2This works for me.
- If you use virtual environment, firstly you should check whether you are under right environment when you are installing new packages. Since if you use pycharm as IDE and conda as virtual env manager, pycharm won't automatically active the environment of your interpreter in terminal. Example: (base) -> (myenv)
- Use pip3 as package installer. Sometimes problems popped up because of different versions of python in your computer.
pip3 install flask_sqlalchemy
packages installed by pip will be under python2.x/site-packages, while that of pip3 will be under python3.x/site-packages
I ran into this issue recently. The following steps resolved my issue:
Ensure you are importing flask
from flask import Flask from flask_sqlalchemy import SQLAlchemy
Also, ensure your env is "activated" before executing your code.
I am using Python 2.7 and pip 20.0.2
If you've installed and nothing seems to change add this line of code to init.py
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False to turn off the track notifications error
for anaconda users.
I tried almost all the solutions above, no one helped me,
but I tried to open anaconda navigator and launched vsCode from anaconda navigator, that's what solved the problem, I think there are some conflicts between working environments.
Note: you should keep the anaconda navigator opened !!!!
I was using PyCharm and encountered the same problem. The solution to this is to open the terminal and make your current directory the file which contains your python program. Then after that install the required package i.e. pip install flask_sqlalchemy . After that it works.