我有以下 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/