70

我无法在 python 中找到一个模块,尽管 easy_install 说它已经安装了。知道如何解决这个问题吗?

$ python -c "from flaskext.sqlalchemy import SQLAlchemy"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named sqlalchemy


$ python -V
Python 2.7


$ sudo easy_install sqlalchemy
Searching for sqlalchemy
Best match: SQLAlchemy 0.7.7
Adding SQLAlchemy 0.7.7 to easy-install.pth file

Using /usr/lib/python2.7/site-packages
Processing dependencies for sqlalchemy
Finished processing dependencies for sqlalchemy

$ sudo pip install SQLAlchemy --upgrade 要求已经是最新的:/usr/lib/python2.7/site-packages 中的 SQLAlchemy 清理...

虽然 pip 说它已安装。但我在 sys.path 输出中找不到它们。

$ sudo python -c "import sys;print sys.path" ['',
'/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-0.15-py2.7.egg',
'/usr/lib/python2.7/site-packages/Flask-0.8-py2.7.egg',
'/usr/lib/python2.7/site-packages/Jinja2-2.6-py2.7.egg',
'/usr/lib/python2.7/site-packages/Werkzeug-0.8.3-py2.7.egg',
'/usr/lib/python2.7/site-packages/Flask_WTF-0.5.2-py2.7.egg',
'/usr/lib/python2.7/site-packages/WTForms-0.6.3-py2.7.egg',
'/usr/lib/python2.7/site-packages/Flask_Mail-0.6.1-py2.7.egg',
'/usr/lib/python2.7/site-packages/blinker-1.2-py2.7.egg',
'/usr/lib/python2.7/site-packages/lamson-1.1-py2.7.egg',
'/usr/lib/python2.7/site-packages/python_daemon-1.6-py2.7.egg',
'/usr/lib/python2.7/site-packages/nose-1.1.2-py2.7.egg',
'/usr/lib/python2.7/site-packages/mock-0.8.0-py2.7.egg',
'/usr/lib/python2.7/site-packages/chardet-1.0.1-py2.7.egg',
'/usr/lib/python2.7/site-packages/lockfile-0.9.1-py2.7.egg',
'/usr/lib/python2.7/site-packages/Flask_FlatPages-0.2-py2.7.egg',
'/usr/lib/python2.7/site-packages/Markdown-2.1.1-py2.7.egg',
'/usr/lib/python2.7/site-packages/PyYAML-3.10-py2.7-linux-i686.egg',
'/usr/lib/python2.7/site-packages/uWSGI-1.0.3-py2.7.egg',
'/usr/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-linux-i686.egg',
'/usr/lib/python27.zip', '/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload',
'/usr/lib/python2.7/site-packages',
'/usr/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info']
4

16 回答 16

76

你安装了flask-sqlalchemy吗?看起来您已经安装了 SQLAlchemy,但没有安装 Flask 扩展。尝试pip install Flask-SQLAlchemy在项目的 virtualenv 中从PyPI安装它。

于 2012-05-13T14:32:54.803 回答
48

我刚刚遇到了同样的问题。显然,有一种新的分发方式,扩展代码不再存储在flaskext.

资料来源: Flask CHANGELOG 这对我有用:

from flask_sqlalchemy import SQLAlchemy
于 2012-05-27T15:33:42.750 回答
21

在你的 virtualenv 中使用 pip 安装 Flask-SQLAlchemy:

pip install flask_sqlalchemy

flask_sqlalchemy然后在您的代码中导入:

from flask_sqlalchemy import SQLAlchemy
于 2016-12-19T20:40:25.113 回答
10

好的,我已经通过 pip 重新安装了软件包,即使这没有帮助。然后我从其他具有与当前机器类似配置的工作机器上同步整个 /usr/lib/python-2.7 目录。它开始工作。我不知道,我的设置有什么问题。我之前和现在看到了一些不同的“print sys.path”输出。但现在我的问题已通过这项工作得到解决。

编辑:为我的设置找到了真正的解决方案。升级“仅 sqlalchemy 不能解决问题”我还需要升级flask-sqlalchemy以解决问题。

于 2012-05-15T02:12:50.107 回答
5

试试这个

from flask.ext.sqlalchemy import SQLAlchemy
于 2012-05-13T16:52:25.897 回答
4

所以这是一个想法!

因为它似乎在其他地方工作。

安装python-virtualenv 并且可以选择安装 virtualenv-wrapper (创建项目等非常酷)

在每个环境中,您可能有不同版本的鸡蛋。换句话说,您可以在两个不同的环境中拥有 sqlalchemy 1 和 sqlaclhemy 1.5,并且它们不会相互冲突。您当前安装的鸡蛋似乎有问题。

所以我们开始:

virtualenv --no-site-packages foo
source foo/bin/activate

参数 --no-site-packages 将创建一个 virtualenv 并且不使用您计算机上已安装的包。这很像一个裸 python 安装。

source foo/bin/activate加载虚拟环境。

这并不是真正的用户友好。这就是http://www.doughellmann.com/projects/virtualenvwrapper/存在的原因。

也就是说,一旦你的 virtualenv 被激活,你应该在你的终端 "(foo)user@domain$:" 中看到类似的东西。这意味着你可以继续!

然后你必须做。

python setup.py develop你的项目。它应该在位于foo. 如果您需要安装其他任何东西,请使用pipeasy_install不使用sudo. 使用 virtualenv 时,您几乎不需要使用sudo. Sudo 将在您的全局 python 安装中安装包,而它不是必需的,也不是真正可取的。

如果您的 virtualenv 中发生了某些事情,您可以随时将其删除并创建一个新的。这没什么大不了的。没必要乱来。不工作?重新开始,在需要时执行pip install -U,在需要时定义版本等等。

最后但并非最不重要的一点是,在其他答案中,导入似乎发生了变化。如果 flask-sqlalchemy 的新版本位于其他地方,您应该更新您的导入或安装您以前使用的版本。

于 2012-06-30T13:13:10.923 回答
4

首先安装库

pip install flask_sqlalchemy 

之后

from flask_sqlalchemy import SQLAlchemy

把它放在 app.py 文件中,通过 SQLAlchemy 获取数据库的访问权限

于 2018-09-18T16:35:52.860 回答
2

此代码完美运行:

import sqlalchemy

也许您将软件包安装在另一个版本的解释器中?

此外,就像 Shawley 指出的那样,您需要安装烧瓶扩展才能访问它。

于 2012-05-13T14:24:52.060 回答
2

我是新手,使用 python 3.8 并遇到了同样的问题。我安装了,pip而不是pip3因为我认为 pip 安装程序对于 python2 和 python3 是相同的,所以这是正确的安装

pip3 install flask_sqlalchemy

于 2020-04-11T18:11:58.287 回答
1

可能是一个愚蠢的错误;但是,我遇到了这个问题,结果是“pip3 install sqlalchemy”将库安装在用户特定的目录中。

在我的 Linux 机器上,我以 user1 身份登录,在 user2 的目录中执行 python 脚本。我将 sqlalchemy 安装为 user1,默认情况下将文件放在 user1 的目录中。在 user2 的目录中安装 sqlalchemy 后,问题就消失了。

于 2020-09-21T04:47:10.167 回答
0

我的解决方案是使用:

from flask_sqlalchemy import SQLAlchemy

代替

from flask.ext.sqlalchemy import SQLAlchemy
于 2018-07-12T17:06:03.833 回答
0

聚会很晚了,但希望这会对某人有所帮助,在相同的情况下大约一个小时,上面提到的任何解决方案都没有工作。(在 Windows 10 机器上)。

在 Settings/Preferences 对话框 ( Ctrl+ Alt+ S) 中,从侧面菜单中选择 Project: | 项目口译员。

检查您当前安装了哪些软件包(您需要 SQLAlchemy 和 Flask-SQLAlchemy)。双击任何包名称,将打开“可用包”菜单。

搜索丢失的软件包并单击安装。

于 2018-12-09T22:58:41.107 回答
0

在 Windows 10 @ 2019 上

我遇到了同样的问题。原来我忘了安装以下软件包:

pip install flask_sqlalchemy

安装软件包后,一切正常。希望,它帮助了像我这样的其他菜鸟。

于 2019-08-08T16:46:43.267 回答
0

我刚刚在使用虚拟环境时遇到了同样的问题。对我来说,使用 venv 中的 python 安装软件包有效:
.\venv\environment\Scripts\python.exe -m pip install flask-sqlalchemy

于 2019-12-11T08:47:35.260 回答
0

我不确定它是否仍然相关,但尝试卸载 sqlalchemy,然后安装 flask-sqlalchemy。

我想如果你有 sqlalchemy,flask-sqlalchemy 就行不通了。

在 Python 3.8 中尝试过

于 2021-06-05T13:54:52.077 回答
0

我也因一个愚蠢的错误而面临同样的问题。我从头开始为烧瓶创建了一个单独的 conda 环境。但是,我尝试使用 IPython 测试 FlaskSQLAlchemy 的导入。最后,我意识到它是基于系统的 python,而不是来自 conda env 的。始终确保您sys.path包含带有 flask_sqlalchemy 的目录。

于 2021-11-12T22:10:19.043 回答