Python 烧瓶脚本添加选项方法不工作

Python 烧瓶脚本添加选项方法不工作,python,flask,flask-script,Python,Flask,Flask Script,使用flask脚本的方法,我试图将配置文件的名称传递到我的create\u app(),以便我可以从\u pyfile()配置—— 我用这个开始了 manage.py from fbone import create_app app = create_app() manager = Manager(app) manager.add_option('-c', '--config', dest='config', required=False) def create_app(config=Non

使用flask脚本的方法,我试图将配置文件的名称传递到我的
create\u app()
,以便我可以从\u pyfile()配置
——

我用这个开始了

manage.py

from fbone import create_app

app = create_app()
manager = Manager(app)
manager.add_option('-c', '--config', dest='config', required=False)
def create_app(config=None, app_name=None, blueprints=None):
    """Create a Flask app."""

    print config
app.py

from fbone import create_app

app = create_app()
manager = Manager(app)
manager.add_option('-c', '--config', dest='config', required=False)
def create_app(config=None, app_name=None, blueprints=None):
    """Create a Flask app."""

    print config
这只是我的
create_app
函数的一个片段,但我启动应用程序的方式如下:

$ python manage.py -c config/heroku.cfg runserver
None
/env/lib/python2.7/site-packages/flask_script/__init__.py:153: UserWarning: Options will be ignored.
* Running on http://127.0.0.1:5000/
* Restarting with reloader
None
如您所见,它不打印
config/heroku.cfg
而是打印
None

我想这是因为flask脚本中的
UserWarning
,但我无法找出发生这种情况的原因。

事实证明,您是通过调用
create\u app(
)(使用parens)来创建flask对象的

如果你这样做

app=create_app

那么你应该可以使用
添加选项()

确定。根据文档“要使其工作,必须使用工厂函数而不是Flask实例初始化管理器。否则,您设置的任何选项都将被忽略。”但我已经在这样做了。出于逻辑原因,它默认为
None
add_选项
方法应将标志后面的参数传递给定义的
dest
,在本例中为
config
。如果我错了,请扩大你的答案。除非有一些相关的代码丢失…我只是按照代码流。当默认为无时,您正在打印
config
<在
create\u app()
中执行print语句后调用code>add\u option,
create\u app
后未“调用”code>add\u option
create_app
是传递到manage.py的应用程序工厂。Flask脚本(或
Manager
对象)有一组默认命令,如
runserver
,您可以
add_option
s,然后它将实例化应用程序(在本例中使用工厂),并将这些选项作为参数传递。app=create_app()
创建不带参数的应用程序,为config打印None
manager=manager(app)wrap manager围绕先前创建的应用manager.add_选项('-c','-config',dest='config',required=False)
create_app之后调用的add_选项…
也有同样的问题,OP。奇怪的是文档没有非常明确地指出它,尽管前面的所有示例都与您的原始代码类似