Flask认证开发遇flask_sqlalchemy模块未找到错误的解决方法
flask_sqlalchemy模块找不到的问题 问题背景
我正在为Flask应用开发认证功能,遵循相关教程操作时,出现了如下错误:
127.0.0.1 - - [29/Aug/2020 21:46:13] "GET / HTTP/1.1" 500 - Traceback (most recent call last): File "/home/gabriel_rc/4Linux/flask_auth_app/project/__init__.py", line 2, in <module> from flask_sqlalchemy import SQLAlchemy ModuleNotFoundError: No module named 'flask_sqlalchemy' 在处理上述异常期间,又触发了另一个异常: Traceback (most recent call last): File "/home/gabriel_rc/.pyenv/versions/3.7.2/lib/python3.7/site-packages/flask/cli.py", line 338, in __call__ self._flush_bg_loading_exception() File "/home/gabriel_rc/.pyenv/versions/3.7.2/lib/python3.7/site-packages/flask/cli.py", line 326, in _flush_bg_loading_exception reraise(*exc_info) File "/home/gabriel_rc/.pyenv/versions/3.7.2/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise raise value File "/home/gabriel_rc/.pyenv/versions/3.7.2/lib/python3.7/site-packages/flask/cli.py", line 314, in _load_app self._load_unlocked() File "/home/gabriel_rc/.pyenv/versions/3.7.2/lib/python3.7/site-packages/flask/cli.py", line 330, in _load_unlocked self._app = rv = self.loader() File "/home/gabriel_rc/.pyenv/versions/3.7.2/lib/python3.7/site-packages/flask/cli.py", line 388, in load_app app = locate_app(self, import_name, name) File "/home/gabriel_rc/.pyenv/versions/3.7.2/lib/python3.7/site-packages/flask/cli.py", line 247, in locate_app "\n\n{tb}".format(name=module_name, tb=traceback.format_exc()) flask.cli.NoAppException: While importing "project", an ImportError was raised: Traceback (most recent call last): File "/home/gabriel_rc/.pyenv/versions/3.7.2/lib/python3.7/site-packages/flask/cli.py", line 240, in locate_app __import__(module_name) File "/home/gabriel_rc/4Linux/flask_auth_app/project/__init__.py", line 2, in <module> from flask_sqlalchemy import SQLAlchemy ModuleNotFoundError: No module named 'flask_sqlalchemy'
注:/home/gabriel_rc/4Linux/flask_auth_app/project/__init__.py文件内容与教程完全一致,请问该如何解决此问题?
解决方案
Hey there, let's get this error sorted out — it's a common pitfall when working with Python virtual environments, so here's what you need to do:
确认你处于正确的虚拟环境中
从你的报错信息来看,你用的是pyenv管理Python版本。首先要确保激活了项目对应的虚拟环境:pyenv activate <你的项目虚拟环境名称>可以通过
which python命令验证,输出路径应该指向/home/gabriel_rc/.pyenv/versions/3.7.2/(或你为该项目创建的专属虚拟环境路径)。在虚拟环境中安装
flask-sqlalchemy
激活环境后,用pip安装缺失的依赖包:pip install flask-sqlalchemy这会把模块安装到当前虚拟环境中,确保Flask导入时能找到它。
检查导入语句和项目结构
既然你说__init__.py和教程完全一致,还是要确认导入语句没有拼写错误:from flask_sqlalchemy import SQLAlchemy(注意大小写,SQLAlchemy首字母是大写的)。同时确保你是从项目根目录(flask_auth_app文件夹下)启动Flask应用的。验证安装结果
安装完成后,运行pip list查看已安装包列表,确认flask-sqlalchemy在其中。之后重启你的Flask应用,这个错误应该就会消失了。
如果还是有问题,大概率是你之前不小心把包安装到了全局Python环境中,而非项目的虚拟环境里。这种情况下,你可以先全局卸载该包,再重新在虚拟环境中安装:
pip uninstall flask-sqlalchemy # 激活虚拟环境后再安装 pip install flask-sqlalchemy
内容的提问来源于stack exchange,提问作者Gabriel Carneiro

