4

我有一个烧瓶项目,我将烧瓶模块(0.9 版)直接放在我的 app.py 文件旁边。我这样做是为了可以将所有内容捆绑到版本控制存储库中,而无需其他任何人使用它来安装额外的 Python 模块。

我想使用flask-login,所以我尝试通过下载最新版本并将flask_login.py 文件放在我的“本地”flask/ext/ 目录中来手动安装它。但是,虽然我可以import flaskimport flask.ext但我无法import flask.ext.login使用 Python throwing ImportError: No module named flask.ext.loginimport flask.ext.flask_login也会引发导入错误。

如果 Flask 及其扩展是 app.py 本地的,我是否需要做一些不同的事情?

4

3 回答 3

4

解决方案是将flask_login.py文件放在与我的 app.py 文件相同的目录中。无需修改flask/ext/__init__.py文件。

flask.ext模块仅用作扩展导入器,而不是已安装扩展的存储库。根据导入路径,我认为该flask/ext文件夹是要复制扩展的位置。这是不正确的。扩展只需要在 python 路径上的某个地方。

于 2012-10-25T20:49:31.523 回答
3

在您的情况下,Python 不会抛出异常,此 Flask 模块负责修改文件夹 import中的标准钩子: https ://github.com/mitsuhiko/flask/blob/master/flask/exthook.pyext

所以,我不认为 put flask_login.pyintoflask/ext是在 Flask 中使用扩展的正确方法。文档建议使用pip install flask-loginor python setup.py install。之后,您可以执行以下操作:

import flask_login

如果您仍想手动执行此操作,setup()请从ext/__ init__.py中删除调用。不过,Flask 家伙这样做可能有充分的理由:-)

于 2012-10-25T09:49:29.883 回答
1

是的,但重点是手动安装所有内容,以便它可以独立于版本控制存储库中,无需额外安装。我查看了 setup.py 文件,但无法确定它是如何实现安装的。– 苏维特 10 月 25 日 10:06

为什么不使用 virtualenv 来实现呢?您也可以将您的环境推送到源代码管理,尽管这不是正常使用。

见: http: //www.virtualenv.org/en/latest/

于 2012-10-28T17:10:36.890 回答