gpt4 book ai didi

python - 无法从父目录加载 Flask 配置

转载 作者:太空狗 更新时间:2023-10-30 02:41:33 25 4
gpt4 key购买 nike

我正在尝试按照此处的文档使用配置文件:http://exploreflask.com/en/latest/configuration.html#the-simple-case

我想使用他们所谓的“简单案例”,但我想从父目录加载 config.py。我的项目树如下所示:

~/Learning/test $ tree
.
├── app
│   └── __init__.py
└── config.py

这是我的app/__init__.py:

from flask import Flask

app = Flask(__name__)
app.config.from_object('config')

这是我的config.py:

DEBUG = True

这是我在尝试运行我的项目时遇到的错误:

Traceback (most recent call last):
File "app/__init__.py", line 4, in <module>
app.config.from_object('config')
File "/usr/local/lib/python2.7/dist-packages/flask/config.py", line 163, in from_object
obj = import_string(obj)
File "/usr/local/lib/python2.7/dist-packages/werkzeug/utils.py", line 443, in import_string
sys.exc_info()[2])
File "/usr/local/lib/python2.7/dist-packages/werkzeug/utils.py", line 418, in import_string
__import__(import_name)
werkzeug.utils.ImportStringError: import_string() failed for 'config'. Possible reasons are:

- missing __init__.py in a package;
- package or module path not included in sys.path;
- duplicated package or module name taking precedence in sys.path;
- missing module, class, function or variable;

Debugged import:

- 'config' not found.

Original exception:

ImportError: No module named config

我想将 config.py 保存在 Flask 应用程序文件的另一个目录中。如何让 Flask 从此处的父目录加载 config.py

最佳答案

你不能从那里加载它,因为正如错误信息所说:

- missing __init__.py in a package;
- package or module path not included in sys.path;

它不是可导入包的一部分。这可能在本地有效,因为您在项目根目录中运行 python,因此当前目录被隐式添加到路径中。不要依赖这种行为。不要手动更改 sys.path

相反,Flask 的 Config具有加载配置的替代方法:从环境变量中的路径

export FLASK_CONFIG="/path/to/config.py"
app.config.from_envvar('FLASK_CONFIG')

或来自与 instance folder 相关的文件

app/
__init__.py
instance/
config.py
app = Flask(__name__, instance_relative_config=True)
app.config.from_pyfile('config.py')

关于python - 无法从父目录加载 Flask 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39142928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com