【问题标题】:Flask app failed to find instance's config.pyFlask 应用程序找不到实例的 config.py
【发布时间】:2019-01-26 13:49:26
【问题描述】:

这是我的 Flask 应用程序的目录层次结构,后跟当前的 FlaskApp/app/__init__.py 代码:

FlaskApp 目录树:

/FlaskApp
│   config.py
│   run.py
├───app
│   │   db.py
│   │   forms.py
│   │   models.py
│   │   views.py
│   │   __init__.py
│   ├───static\
│   └───templates\
├───instance
│       config.py

__init__.py:

from flask import Flask

app = Flask(__name__,
        instance_relative_config=True,
        )
app.config.from_object('config')
app.config.from_pyfile('config.py')

使用app.config.from_pyfile('config.py') 从实例文件夹加载配置变量会引发以下错误:

FileNotFoundError: [Errno 2] 无法加载配置文件(没有这样的文件或目录):'C:\..\FlaskApp\app\instance\config.py'

我必须使用unipath 来处理当前路径,通过将instance_path=Path(os.getcwd()).parent + "\instance" 添加到var app 来克服这个问题。

虽然这样做很好地解决了问题,但我相信有更好/更干净的方法来做到这一点(不改变当前目录层次结构)。任何人都可以与此相关吗??

谢谢,

【问题讨论】:

    标签: flask path


    【解决方案1】:

    您可以尝试使用os.path.abspath(__file__) 获取当前文件的绝对路径。

    然后加入 '../instance'

    my_instance_location = os.path.join(os.path.abspath(__file__),'../instance')
    app = Flask(__name__,
        instance_path=my_instance_location,
        instance_relative_config=True,
    )
    

    【讨论】:

    • 谢谢先生 :)),不过我正在寻找更 Flasky 的东西 ;)
    • @jes 找到解决方案了吗?
    • @jes 您是否使用问题中提供的解决方法来保持工作正常进行?问题中的所有内容都相同吗?项目布局等方面是否有任何变化,因为您已经有一段时间没有问过了
    • 我一直在为这个问题寻找烧瓶式的解决方案,不幸的是,我找不到一个,所以我保持不变。你是否也面临同样的问题?
    • 嗯.. 你的意思是app.run() 吗?来自 run.py
    猜你喜欢
    • 2016-12-29
    • 1970-01-01
    • 2021-10-29
    • 2018-07-25
    • 2012-12-26
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多