python import 相互导入的执行先后顺序问题

app.py:

from flask import Flask
# 如果在这里添加 import model 就会报错

app = Flask(__name__)

# ...
# model.py 需要导入使用
# 然后执行一些数据操作
# ...

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

Flask 项目,model.py 里需要导入主程序 app.py 中的 app,即 app = Flask(__name__),然后再 app.py 里又需要到导入 model.py 定义的数据结构来使用,这个时候就会报错,有什么解决方法吗?

阅读 8.6k
2 个回答

也可以把app单独拿出来定义,然后其他包用的时候导入

from flask import Flask
app = Flask(__name__)

原则上不要循环引用,循环应用的可能会导致一个模块只加载了一半,最好是把相关的逻辑独立出去
或者可以考虑类似依赖注入的方式

比如

# b.py
x = None
...

# a.py
import b
b.x = ...
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题