Python 3中从Flask惯用的进口
问题描述:
瓶提出了以下文件格式:Python 3中从Flask惯用的进口
runflaskapp.py
flaskapp/
__init__.py
runflaskapp.py包含:
from flaskapp import app
app.run(debug=True)
flaskapp/初始化的.py包含:
from flask import Flask
app = Flask(__name__)
用'python3 runflaskapp.py'运行这个工作正常。然而它似乎对我来说,更Python3的方式做到这一点将 重命名'runflaskapp.py'为'flaskapp/主 .py',然后运行 整个事情为'python3 -m flaskapp'。不幸的是,这并不 工作:
$ python3 -m flaskapp
* Running on http://127.0.0.1:5000/
* Restarting with reloader
Traceback (most recent call last):
File "/home/username/src/flaskapp/__main__.py", line 1, in <module>
from flaskapp import app
ImportError: No module named 'flaskapp'
有谁知道为什么和如何解决它?
答
的-m
标志做到这一点:
已命名的模块搜索sys.path中,并作为
__main__
模块执行其内容......在供给,而不是一个正常的模块包名称,解释器将执行<pkg>.__main__
作为主要模块。
换句话说,flaskapp
不导入为flaskapp
,但作为__main__
,就像一个剧本会,然后将其__main__
模块得到执行。
这意味着from flaskapp import app
将无法正常工作,因为没有任何名称为flaskapp
。
但相对进口from . import app
会。所以,只要flaskapp
除了新的__main__.py
文件以外没有任何地方的绝对进口,那一行就应该这样做。
哪个版本的Python 3.x是这样的? – abarnert 2014-09-20 04:51:56
我正在使用Python 3.4.1 – 2014-09-20 05:00:49