我有以下烧瓶应用程序:
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__)))