如何手动安装Flask扩展?

时间:2012-10-25 09:36:27

标签: python flask flask-login flask-extensions

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

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

如果Flask及其扩展程序是app.py的本地扩展,我是否需要采取不同的措施?

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

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

所以,我不认为将flask_login.py放入flask/ext是在Flask中使用扩展的正确方法。文档建议使用pip install flask-loginpython setup.py install。之后你可以这样做:

import flask_login

如果您仍想手动执行此操作,请从ext/__ init__.py移除setup()来电。 这可能有一个很好的理由,为什么Flask家伙这样做: - )

答案 2 :(得分:1)

  

是的,但重点是手动安装所有内容,以便它可以自包含在版本控制存储库中,不需要额外的安装。我查看了setup.py文件,但无法确定它是如何实现安装的。 - Soviut 10月25日10:06

为什么不使用virtualenv来实现这一目标?您也可以将您的环境推送到源控件,尽管这不是正常使用。

请参阅:http://www.virtualenv.org/en/latest/