2016-03-04 55 views
2

__init__.py我試圖從Python文件相對於實例文件夾加載配置。這是拋出一個錯誤Unable to load configuration file (No such file or directory): '/home/ais-flask/ais/instance/config.py',這是錯誤的,因爲實例文件夾應該在包旁邊,不在其中,而我的是。我以setup.py develop的開發模式安裝我的軟件包。我用python __init__.py運行應用程序。爲什麼這不起作用?無法加載應用程序中的實例配置組織爲一個包

ais-flask/ 
    ais/ 
     __init__.py 
    instance/ 
     config.py 
    setup.py 
from flask import Flask 

app = Flask(__name__, instance_relative_config=True) 
app.config.from_pyfile('config.py') 

回答

1

因爲你的應用程序是一個包,而不是一個單獨的模塊,你需要用一個腳本來運行它。調用python __init__.py會擾亂Python的路徑/程序包檢測。這在docs中描述。

ais-flask/run.py

from ais import app 
app.run(debug=True) 
python run.py 

考慮使用腳本運行,像瓶腳本或燒瓶CLI。這將允許您創建一個處理多個命令和選項的運行器。

由於您正在安裝軟件包(這是一個很好的設計模式),因此您可以使用入口點而不是自己編寫腳本。

from flask import Flask 
from flask_script import Manager 

app = Flask(__name__, instance_relative_config=True) 
app.config.from_pyfile('config.py') 
manager = Manager(app) 

setup.py,添加以下到setup電話:

entry_points = {'console_scripts': ['flask=ais:manager.run']} 

這增加了flask命令到您的路徑,而在virtualenv中。

flask runserver 
相關問題