python - 如何在实例文件夹和basedir中使用flask配置

标签 python flask

我有以下 flask 应用程序:

main.py

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

application/init.py

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

实例/flask.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__,因此它引用了 instance/,其中 flask.cfg是!

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

你需要做这样的事情:

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

这也行

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

关于python - 如何在实例文件夹和basedir中使用flask配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52229569/

相关文章:

python - 模拟还是 stub ?

python - static_rnn 和 dynamic_rnn 有什么区别?

python - Flask 和 WTForms - 如何确定文件上传字段是否已提交用于处理目的

python - 从 FLASK 应用程序运行 Celery Worker

python - flask Python 按钮

python - Jinja2 - 覆盖包含在内的 block 标记?

c# - 抓取基于登录的网站的最佳方式是什么?

Python 列表理解- "pop"来自原始列表?

python - Flask CSRF 保护在响应 header 上设置无效的 Set-Cookie

Python/Keras - 为每个时期创建一个带有一个预测的回调