【问题标题】:ImportError: No module named 'flask_sqlalchemy' w/ 2 Versions of Python InstalledImportError:没有安装了 2 个 Python 版本的名为“flask_sqlalchemy”的模块
【发布时间】:2019-01-08 05:58:37
【问题描述】:

尝试运行具有以下导入的文件:

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)

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

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

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

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

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

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

【问题讨论】:

  • 也有可能你的 pip 和 python 版本不匹配(即你仍然指向 python2 的 pip,所以它认为 flask_sqlalchemy 已安装,但随后使用 python3 运行)。如果不查看您的环境,很难判断这里发生了什么
  • 您能否显示which python 的输出(或显示在您的cmd 行上执行python 时出现的REPL)。并给出pip --version的输出?
  • 是的,我怀疑你正在为 python2.7 运行带有 pip 的 python3。所以没有为 Python3 正确安装这些库。您可以使用 python2 运行,也可以使用 pip3 并重新安装您的库
  • 如果您无法更改正在使用的 pip,那么您需要确保您使用的是 Python2,而不是 Python3。您已经安装了 Python2 的库(据我所知)。
  • 等等,不是 PYTHONPATH,而是获取 Python2 而不是 Python3 的常规 PATH...PYTHONPATH 只能用于指向 Python 库(在运行 python 之后),但它不会告诉你的操作系统启动哪个 Python

标签: python sqlalchemy flask-sqlalchemy


【解决方案1】:

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

sudo apt-get install python3-sqlalchemy

这应该可行。

~$ python3

>>import sqlalchemy

【讨论】:

  • 在linux中做一个which pip可以帮助你找到你的pip路径并确保它符合which python
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    如果你在 Mac 上,试试 pip install flask-sqlalchemy 代替 pip3 install flask-sqlalchemy

    它有一些警告,但能够成功连接到数据库并创建表。 "FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS 会增加大量开销,并且将来默认禁用。将其设置为 True 或 False 以禁止显示此警告。"

    【讨论】:

    • 谢谢。它对我有用。调试了好久
    【解决方案4】:

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

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

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

    【讨论】:

    • 如果你使用 anaconda,尽量避免同时使用 pip 安装,因为它会导致依赖问题。如果您使用 conda、virtualenv 或诗歌来管理它,最好为不同的项目使用不同的环境。
    【解决方案5】:

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

    原因

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

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

    解决方案

    • Open new terminal deactivate virtual environment
    • 在全局环境中安装 flask-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
        

    【讨论】:

      【解决方案6】:

      可能是 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
      

      为了将软件包安装在正确的位置。

      【讨论】:

        【解决方案7】:

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

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

        【讨论】:

        • 不知道 pycharm 是什么。据我所知,这里不需要它。
        • 哦,我错误地认为您使用 pycharm 作为您的 IDE,我的错。
        【解决方案8】:

        原因

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

        • 由于pip install flask 或在全局中安装了flask 而发生错误
        • 当我们运行flask run 时,pythonpython3 编译器首先检查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
          

        【讨论】:

          【解决方案9】:

          这对我有用。

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

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

          【讨论】:

            【解决方案10】:

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

            确保您正在导入烧瓶

            from flask import Flask from flask_sqlalchemy import SQLAlchemy

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

            另外,请确保在执行代码之前“激活”您的环境。

            我正在使用 Python 2.7 和 pip 20.0.2

            【讨论】:

              【解决方案11】:

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

              app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
              

              关闭跟踪通知错误

              【讨论】:

                【解决方案12】:

                适用于 anaconda 用户。

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

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

                注意:您应该保持anaconda 导航器处于打开状态!!!!

                【讨论】:

                  【解决方案13】:

                  我在使用 PyCharm 时遇到了同样的问题。解决方案是打开终端并将您的当前目录设置为包含您的 python 程序的文件。然后安装所需的包,即 pip install flask_sqlalchemy 。之后它就可以工作了。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2015-01-16
                    • 2015-01-21
                    • 2016-12-07
                    • 1970-01-01
                    • 2015-08-19
                    • 1970-01-01
                    • 1970-01-01
                    • 2019-02-02
                    相关资源
                    最近更新 更多