use*_*914 8 python pytest flask
在尝试将py.test功能添加到Flask API时,我在源目录上调用py.test时遇到以下错误消息
E ImportStringError: import_string() failed for 'config'. Possible reasons are:
E
E - missing __init__.py in a package;
E - package or module path not included in sys.path;
E - duplicated package or module name taking precedence in sys.path;
E - missing module, class, function or variable;
E
E Debugged import:
E
E - 'config' not found.
E
E Original exception:
E
E ImportError: No module named config
Run Code Online (Sandbox Code Playgroud)
在我实例化我的Flask应用程序并尝试从config.py(第5行)导入配置之后,问题似乎就出现了.
from flask import Flask
# Setup app
app = Flask(__name__)
app.config.from_object('config')
# Import views
from views import *
if __name__ == '__main__':
app.run()
Run Code Online (Sandbox Code Playgroud)
如果我手动设置配置变量而不是导入它们,那么一切似乎都有效.有人遇到过这样的事吗?我在文档中找不到任何有用的东西.
twi*_*wil 17
我想这些是最有可能的
E - package or module path not included in sys.path;
E - duplicated package or module name taking precedence in sys.path;
Run Code Online (Sandbox Code Playgroud)
所以我要尝试的第一件事就是将配置文件重命名为config_default.py.
然后你可以尝试使用真实对象而不是字符串,例如.自己导入配置:
from flask import Flask
import config
# Setup app
app = Flask(__name__)
app.config.from_object(config)
Run Code Online (Sandbox Code Playgroud)
但很可能你会遇到同样的错误: ImportError: No module named config
您还可以使用app.config.from_pyfile()并指定配置文件的完整路径:
app.config.from_pyfile('config.py')
Run Code Online (Sandbox Code Playgroud)
from_pyfile()使用不同的技术来创建对象(它使用[exc)(https://github.com/mitsuhiko/flask/blob/master/flask/config.py#L129)).
我自己更喜欢使用from_envvar()并指定在启动器中使用哪个配置文件(现在是supervisord).
Cra*_*Ray 11
虽然这是一个古老的帖子和Flask非常重要的问题,但这些日子我碰巧有这个问题.如果任何人也有同样的问题,你应该检查config.py文件的路径.起初,我在app dir中创建了config.py. 然后我搬到应用程序之外,它的工作原理.像这样:
-app---
|
|----__init__.py
|----config.py
Run Code Online (Sandbox Code Playgroud)
改成:
-app---
|
|----__init__.py
-config.py
Run Code Online (Sandbox Code Playgroud)
Twil 提出了很好的观点以及 app.config.from_object 的替代方案。然而,我在使用以下Flask 教程时遇到问题时偶然发现了这个问题,我想遵循该指南并使用 from_object。
我纠正问题的方法是我最初将 config.py 文件放在我的“app”包中。它应该位于我的应用程序之外,位于我的 run.py 脚本所在的同一文件夹中。
我希望这个答案可以节省一些人的时间。
| 归档时间: |
|
| 查看次数: |
11776 次 |
| 最近记录: |