jaz*_*lue 4 python flask python-3.x
我有以下Flask代码,文件__init__.py:
from flask import Flask
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from flask_sqlalchemy_session import flask_scoped_session
from . import configmodule
app = Flask(__name__)
engine = create_engine(configmodule.DevelopmentConfig.SQLALCHEMY_DATABASE_URI) # <--- THIS WORKS
session_factory = sessionmaker(bind=engine)
session = flask_scoped_session(session_factory, app)
app.config.from_object('configmodule.DevelopmentConfig') # <--- THIS FAILS IN Python 3
...
Run Code Online (Sandbox Code Playgroud)
文件configmodule.py与上面的__init__.py位于同一目录中.
在使用python 3.5.2运行它之后,我得到:
werkzeug.utils.ImportStringError: import_string() failed for 'configmodule.DevelopmentConfig'. 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:
- 'configmodule' not found.
Run Code Online (Sandbox Code Playgroud)
此错误适用于代码段中的最后一行:
app.config.from_object('configmodule.DevelopmentConfig') # <--- THIS FAILS IN Python 3
Run Code Online (Sandbox Code Playgroud)
使用Python 2运行它没有任何问题.任何想法如何使它与Python 3一起使用?谢谢.
Python 3放弃了对隐式相对导入的支持.您需要使用绝对导入
app.config.from_object('packagename.configmodule.DevelopmentConfig')
Run Code Online (Sandbox Code Playgroud)
显式相对导入似乎不受支持from_object.
PEP 8的进口部分对此进行了介绍.
编辑:删除了显式导入示例.
| 归档时间: |
|
| 查看次数: |
1084 次 |
| 最近记录: |