我有一个Flask项目,我将烧瓶模块(版本0.9)直接放在我的app.py文件旁边。我已经这样做了,所以我可以将所有内容捆绑到一个版本控制存储库中,不需要其他任何人使用它来安装其他Python模块。
我想使用flask-login所以我尝试通过下载最新版本并将flask_login.py文件放在我的“local”flask / ext /目录中来手动安装它。但是,虽然我可以import flask
和import flask.ext
,但我无法import flask.ext.login
使用Python投掷ImportError: No module named flask.ext.login
。 import flask.ext.flask_login
也会引发导入错误。
如果Flask及其扩展程序是app.py的本地扩展,我是否需要采取不同的措施?
答案 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-login
或python setup.py install
。之后你可以这样做:
import flask_login
如果您仍想手动执行此操作,请从ext/__ init__.py移除setup()
来电。
这可能有一个很好的理由,为什么Flask家伙这样做: - )
答案 2 :(得分:1)
是的,但重点是手动安装所有内容,以便它可以自包含在版本控制存储库中,不需要额外的安装。我查看了setup.py文件,但无法确定它是如何实现安装的。 - Soviut 10月25日10:06
为什么不使用virtualenv来实现这一目标?您也可以将您的环境推送到源控件,尽管这不是正常使用。