繁体   English   中英

ImportError:没有安装名为“flask_sqlalchemy”的模块 w/2 个版本的 Python

[英]ImportError: No module named 'flask_sqlalchemy' w/ 2 Versions of Python Installed

尝试使用以下导入运行文件:

from flask_sqlalchemy import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker

收到以下错误:

ImportError: No module named 'flask_sqlalchemy'

SQLAlchemy 已安装。 尽管如此,我还是尝试重新安装到将要使用它的目录中。 我懂了:

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)

关于我不拥有该目录的说法是不正确的。 我是这台机器上唯一的人。 我拥有一切。

无论如何,我返回 go 重新运行该文件并得到相同的错误消息。 因此,它已安装,但未安装,或者至少对我不可用。

当我注释掉其中一个导入语句时看到的一条错误消息如下所示:

File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/sqlalchemy/engine/strategies.py

我不知道如何解决这个问题并启动并运行 SQLAlchemy。 我已经在上面烧了 1.5 多个小时。 列出的最后一个错误表明有 2 个版本的 python 可能与此有关。

您对补救措施的想法将不胜感激。

我认为您的 pip 和 python 版本不匹配。 检查您的 pip 版本pip --version ,如果它是 pip3
你可以试试这个

sudo apt-get install python3-sqlalchemy

这应该有效。

~$ python3

>>import sqlalchemy

你安装了flaskext.sqlalchemy吗? 看起来您可能只安装了SQLAlchemy包而不是 Flask 扩展。 尝试pip install Flask-SQLAlchemy

最终,我在发布上述问题后解决了这个问题。

修复是运行所有包更新并通过 Anaconda 安装并在 Spyder 中完成我的工作。

学到的教训很简单:一旦您开始使用 Anaconda 作为所有 Python 的首选环境,默认情况下,所有更新(通过 conda install 或 pip 进行)都将由 Anaconda 编排并放置在您的系统中。

这个问题主要发生在我们在virtual environment中使用 cmd flask run烧瓶时

原因

flask run命令运行烧瓶时会发生这种情况

flask-sqlalchemy考虑pythonpython3的路径而不是virtaul environment安装的包路径

解决方案

  • Open new terminaldeactivate virtual environment
  • 安装在全球环境烧瓶SQLAlchemy的pip install flask-sqlalchemy
  • 然后激活virtual environment并运行命令
    • 在 Ubuntu/Mac 中

      export FLASK_APP=app export FLASK_ENV=development flask run
    • 在 Windows 中

      SET FLASK_APP=app SET FLASK_ENV=development flask run

很可能您可能已经在虚拟环境中安装了特定项目,但随后忘记将 venv 解释器指定为项目的解释器。 如果您使用的是 pycharm,请转至文件 > 设置 > 项目解释器,然后从下拉列表中为您的项目选择正确的解释器。

该窗口还会向您显示安装在该特定解释器上的所有软件包,以便您可以确认您已经实际安装了 SQLAlchemy。

如果您使用的是 mac,请尝试pip install flask-sqlalchemy pip3 install flask-sqlalchemy而不是pip3 install flask-sqlalchemy

它适用于一些警告,但能够成功连接到数据库并创建表。 “FSADeprecationWarning:SQLALCHEMY_TRACK_MODIFICATIONS 会增加大量开销,将来默认情况下将被禁用。将其设置为 True 或 False 以抑制此警告。”

可能是 pip 路径问题。 如果使用 conda 虚拟环境(使用 anaconda 或 miniconda),请检查 linux 中的which pipwhich python (找到您的 pip 和 python 路径)并确保它们对齐。 修复您的 pip 路径问题或代替pip install flask_sqlalchemy执行

<ANACONDA or MINICONDA PATH>/envs/<ENV_NAME>/bin/pip install flask_sqlalchemy

以便将软件包安装在正确的位置。

这对我有用。

  1. 如果您使用虚拟环境,首先您应该在安装新软件包时检查您是否处于正确的环境中。 由于如果您使用 pycharm 作为 IDE 并使用 conda 作为虚拟环境管理器,pycharm 不会在终端中自动激活解释器的环境。 示例: (base) -> (myenv)
  2. 使用 pip3 作为软件包安装程序。 有时会因为计算机中的 Python 版本不同而出现问题。 pip3 install flask_sqlalchemy

pip 安装的包在 python2.x/site-packages 下,pip3 安装在 python3.x/site-packages 下

我最近遇到了这个问题。 以下步骤解决了我的问题:

确保您正在导入烧瓶

from flask import Flask from flask_sqlalchemy import SQLAlchemy

Flask sqlalchemy 教程https://flask-sqlalchemy.palletsprojects.com/en/2.x/quickstart/

此外,在执行代码之前,请确保您的 env 已“激活”。

我正在使用 Python 2.7 和 pip 20.0.2

如果您已经安装并且似乎没有任何变化,请将这行代码添加到init .py

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

关闭轨道通知错误

对于anaconda用户。

我几乎尝试了上面所有的解决方案,没有人帮助我,

但是我尝试打开anaconda navigator并从anaconda navigator启动vsCode ,这就是解决问题的方法,我认为工作环境之间存在一些冲突。

注意:你应该保持anaconda 导航器打开!!!!

我正在使用 PyCharm 并遇到了同样的问题。 解决这个问题的方法是打开终端并使您的当前目录成为包含您的 python 程序的文件。 然后安装所需的包,即 pip install flask_sqlalchemy 。 之后它就起作用了。

原因

virtual environment中从flask run命令运行烧瓶时会发生这种情况

  • 发生错误,由于pip install flask或安装flask全球范围内
  • 当我们运行flask runpythonpython3编译器首先检查flask全局包,如果不存在flask则检查virtual environment
  • 如果pythonpython3检测flask全球范围内flask包装将导入其它软件包一样SQLAlachemyMigrate ,从全球封装

解决方案

  • 打开new终端或deactivate虚拟环境

  • 卸载该flask全球封装pip uninstall flaskpip3 uninstall flask

  • 然后回到virtual environment终端

    • 运行烧瓶flask run

    或者

  • activate虚拟环境并运行命令

    在 Ubuntu/Mac 中

    export FLASK_APP=app export FLASK_ENV=development flask run

    在 Windows 中

    SET FLASK_APP=app SET FLASK_ENV=development flask run

这对我有用,希望你觉得它有用:

首先,全局卸载flask和flask_sqlalchemy,打开一个cmd运行:

pip uninstall flask pip uninstall flask_sqlalchemy

然后,激活你项目的虚拟环境,在我的例子中:

.\venv\Scripts\activate

然后在本地安装 flask 和 flask_sqlalchemy。 确保在命令行的开头说类似 (venv) 的内容:

pip install flask pip install flask_sqlalchemy

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM