如何在实例文件夹和底座中使用烧瓶配置



我有以下烧瓶应用程序:

main.py

from application import create_app    
app = create_app('flask.cfg')

应用程序/初始化.py

def create_app(config_filename=None):
app = Flask(__name__, instance_relative_config=True)
app.config.from_pyfile(config_filename)

实例/烧瓶.cfg

import os
basedir = os.path.abspath(os.path.dirname(__file__))
SQLALCHEMY_DATABASE_URI = os.environ.get(
'DATABASE_URL') or 'sqlite:///' + os.path.join(basedir, 'database/app.db')

我对此设置的问题:basedir 解析为实例文件夹,而不是我的数据库文件夹所在的项目的 basedir。 处理这个问题的最佳方法是什么?

__file__

是文件所在的目录。

您在instance/flask.cfg中使用了__file__,因此它指的是flask.cfg所在的instance/

您所需要的只是回到您的项目目录,因为 您的main.py位于项目目录中

你需要做这样的事情:

basedir = os.path.abspath(os.path.join('../', os.path.dirname(__file__)))

这也将起作用

basedir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

最新更新