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 的相对导入模块的。 |