我尝试按照此处的文档使用配置文件: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
?
答案 0 :(得分:4)
您无法从那里加载它,因为错误消息显示:
- 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')