我有一个看起来像这样的文件夹结构:

myproject/
    - flask_app/
        - app.py
        - templates/
    - module1.py
    - module2/
        - db.py
        - models/


尝试执行以下操作时,我在Flask应用程序中遇到了ImportErrors:

from module2 import db
# or something else like
import module1

from flask import Flask
app = Flask(__name__)

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


这显然是因为Flask应用程序是从其自己的子目录“ flask_app”运行的。我通常会通过这样运行来尝试解决此问题:

python -m flask_app.app


但这似乎并不能解决问题。

有没有一种方法可以从根文件夹中运行我的flask应用程序,而不必诉诸相对导入(使用旧版本的Python)

最佳答案

运行python -m flask_app.app时,很可能sys.path不会包含myproject路径。

最简单的方法是将顶级脚本放在myproject目录中。我们称之为runsite.py

from flask_app.app import app
app.run(debug=True)


并使用Python运行它:

$ python runsite.py

09-20 17:59