
app/__init__.py ... from flask_redis import FlaskRedis from flask_login import LoginManager import os ... login_manager = LoginManager() login_manager.session_protection = 'strong' login_manager.login_view = 'auth.oauth' def create_app(cOnfig="app.config"): app = Flask(__name__) with app.app_context(): app.config.from_object(config) ... redis_store = FlaskRedis() redis_store.init_app(app) login_manager.init_app(app) ... ---- app/models.py from . import login_manager 但是这样 import 会报错 ImportError: cannot import name 'login_manager' 参考了 Flask Web 开发一书
版本Python 3.6 启动 run.py
from app import create_app app = create_app() app.run(host="0.0.0.0",port=4000,debug=app.debug, threaded=True) 1 billlee 2017-03-23 00:09:46 +08:00 我不能重现,你需要把你启动程序的方式说一下 |
2 terence4444 2017-03-23 00:23:43 +08:00 这种情况不用 from 直接 import login_manager 就可以了,但 from 用包相对路径我这的确也不行,不知道怎么搞。 |
3 freestyle 2017-03-23 00:41:49 +08:00 via iPhone Python 相关的问题得写 py2 还是 py3 啊大兄弟 |
4 ysicing OP @terence4444 直接 import 也不行的 |
5 ysicing OP |
6 lt0136 2017-03-23 01:19:13 +08:00 via Android 有循环导入的问题。。 把所有 import 自己代码的地方比如 blueprint 放在 creat_app()里面 能放后面就放后面 仔细分析一下包的导入过程你就知道为啥了。。 |
8 zsz 2017-03-23 02:00:31 +08:00 @ysicing 解决循环引用就好了, 尽量整理好导入的模块关系 有问题可以加我们的群问,这样效率更高,这个群是一群工程师组建的面向初学者的 Python Linux 学习群, qq 群号: 278529278 , Php Linux 学习群, qq 群号: 476648701 , 非商业性质,拒绝广告,只接收真正想学这方面技术的朋友,交流学习,申请请说明来自 v2ex |
9 ap010gi2e 2017-03-23 12:47:14 +08:00 我感觉题主是想问 from...import...的相对导入问题。当要在 python 中使用相对导入模块,对目录结构是有要求的。 一、执行相对导入的模块(.py )文件不能作为顶层模块执行该文件夹中的 py 文件的。 二、相对导入的文件夹必须要被 python 解释器理解为包的(也就是必须要包含__init__.py )文件。 同时满足上述两个条件,才可以进行 from import 的相对导入模块的。 |