我有以下烧瓶应用程序:
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)
instance / 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。 最好的方法是什么?
答案 0 :(得分:1)
__file__
是文件所在的目录。
您在__file__
中使用了instance/flask.cfg
,因此它是指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__)))