2014-09-20 48 views
0

瓶提出了以下文件格式: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' 

有誰知道爲什麼和如何解決它?

+0

哪個版本的Python 3.x是這樣的? – abarnert 2014-09-20 04:51:56

+0

我正在使用Python 3.4.1 – 2014-09-20 05:00:49

回答

3

-m標誌做到這一點:

已命名的模塊搜索sys.path中,並作爲__main__模塊執行其內容......在供給,而不是一個正常的模塊包名稱,解釋器將執行<pkg>.__main__作爲主要模塊。

換句話說,flaskapp不導入爲flaskapp,但作爲__main__,就像一個劇本會,然後將其__main__模塊得到執行。

這意味着from flaskapp import app將無法​​正常工作,因爲沒有任何名稱爲flaskapp

但相對進口from . import app會。所以,只要flaskapp除了新的__main__.py文件以外沒有任何地方的絕對進口,那一行就應該這樣做。