问题
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/Python.framework/Versions/3.5/lib/python3.5/site-packages/sqlalchemy/engine/strategies.py
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.
回答1:
Did 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
回答2:
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
回答3:
This 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
回答4:
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."
回答5:
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.
回答6:
Ultimately, 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.
回答7:
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.
回答8:
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
Flask sqlalchemy tutorial https://flask-sqlalchemy.palletsprojects.com/en/2.x/quickstart/
Also, ensure your env is "activated" before executing your code.
I am using Python 2.7 and pip 20.0.2
回答9:
Faced a similar problem in pycharm with windows 10 when I move venv directory from one place to another.
Solved by removing and recreating venv with installation of all modules.
来源:https://stackoverflow.com/questions/51620139/importerror-no-module-named-flask-sqlalchemy-w-2-versions-of-python-installe