Flask uWSGI 应用程序结构和 python3 导入
Flask uWSGI application structure and python3 imports
我有一个基本的 flask-restful 应用程序,其结构类似于 flask 网站上推荐的结构。
/application
/application
/config.py
/__init__.py
/wsgi.ini
有点不相关,但是config.py
是由我们的CD服务器生成的。
wsgi.ini
看起来像这样
[uwsgi]
module = application:app
master = true
processes =5
socket = /tmp/application.sock
chmod-socket = 660
vacuum = true
die-on-term = true
和__init__.py
看起来像这样
import config
from flask import Flask, request, g
from flask_restful import Resource, Api, abort
app = Flask(__name__)
api = Api(app)
if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True)
现在,当我尝试使用 uwsgi --ini wsgi.ini
启动应用程序时,出现此错误:
File "./application/__init__.py", line 2, in <module>
import config
最初 __init__.py
被调用 main.py
并且我执行了它来调试,这就是导入现在错误的原因。我想我需要将导入更改为 from .config import *
我的问题有两个:
- 我可以完全避免导入问题吗?即 python3 中是否有一种方法可以导入对两种方法都有效的同级模块
- 我的wsgi.ini在正确的地方吗,还是应该在内部应用程序目录中?
Python 3.x 放弃了对包内相关导入的支持。您需要使用绝对导入:
from application import config
或 new spelling of relative imports:
from . import config
如果您还需要支持 Python 的旧版本,您可以通过以下方式启用此行为:
from __future__ import absolute_import
我有一个基本的 flask-restful 应用程序,其结构类似于 flask 网站上推荐的结构。
/application
/application
/config.py
/__init__.py
/wsgi.ini
有点不相关,但是config.py
是由我们的CD服务器生成的。
wsgi.ini
看起来像这样
[uwsgi]
module = application:app
master = true
processes =5
socket = /tmp/application.sock
chmod-socket = 660
vacuum = true
die-on-term = true
和__init__.py
看起来像这样
import config
from flask import Flask, request, g
from flask_restful import Resource, Api, abort
app = Flask(__name__)
api = Api(app)
if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True)
现在,当我尝试使用 uwsgi --ini wsgi.ini
启动应用程序时,出现此错误:
File "./application/__init__.py", line 2, in <module>
import config
最初 __init__.py
被调用 main.py
并且我执行了它来调试,这就是导入现在错误的原因。我想我需要将导入更改为 from .config import *
我的问题有两个:
- 我可以完全避免导入问题吗?即 python3 中是否有一种方法可以导入对两种方法都有效的同级模块
- 我的wsgi.ini在正确的地方吗,还是应该在内部应用程序目录中?
Python 3.x 放弃了对包内相关导入的支持。您需要使用绝对导入:
from application import config
或 new spelling of relative imports:
from . import config
如果您还需要支持 Python 的旧版本,您可以通过以下方式启用此行为:
from __future__ import absolute_import