8

我用 Flask 在 vi​​rtualbox 上建立了一个网站。该网站可以在本地主机上打开,但我无法通过端口转发打开它,所以我将代码从 更改manage.run()manage.run(host='0.0.0.0').

问题是我收到此错误:

typeerror run() got an unexpected keyword argument 'host'. 

manage.run()更改为时会发生类似的错误manage.run(debug=True)。我只是遵循了 Flask 文档。http://flask.pocoo.org/docs/quickstart/#a-minimal-application谁能告诉我为什么我会收到这个错误?

#!/usr/bin/env python
#-*- coding:utf-8 -*-

"""Manage Script."""

from sys import stderr, exit

from flask.ext.script import Manager, prompt_bool

from szupa import create_app
from szupa.extensions import db
from szupa.account.models import User
from szupa.context import create_category_db


app = create_app()
manager = Manager(app)


@manager.command
def initdb():
    """Initialize database."""
    db.create_all()
    create_category_db()


@manager.command
def migrate(created, action="up"):
    module_name = "migrates.migrate%s" % created
    try:
        module = __import__(module_name, fromlist=["migrates"])
    except ImportError:
        print >> stderr, "The migrate script '%s' is not found." % module_name
        exit(-1)
    if prompt_bool("Confirm to execute migrate script '%s'" % module_name):
        try:
            action = getattr(module, action)
        except AttributeError:
            print >> stderr, "The given action '%s' is invalid." % action
            exit(-1)
        action(db)
        print >> stderr, "Finished."


@manager.command
def dropdb():
    """Drop database."""
    if prompt_bool("Confirm to drop all table from database"):
        db.drop_all()


@manager.command
def setadmin(email):
    """Promote a user to administrator."""
    user = User.query.filter_by(email=email).first()
    if not user:
        print >> stderr, "The user with email '%s' could not be found." % email
        exit(-1)
    else:
        user.is_admin = True
        db.session.commit()


if __name__ == "__main__":
    manager.run()
4

2 回答 2

2

正如@fangwz0577 在评论中所说,他们使用manager.add_command. 他们的链接的存档版本在这里

接下来,创建 manage.py 文件。将来使用此文件加载其他 Flask 脚本。Flask-scripts 提供了一个开发服务器和外壳:

from flask.ext.script 导入管理器,服务器
从 tumblelog 导入应用程序

经理=经理(应用程序)

 # 默认开启调试器并重新加载
manager.add_command(“运行服务器”,服务器(
    use_debugger = 真,
    use_reloader = 真,
    主机 = '0.0.0.0') )
于 2015-12-18T12:25:50.187 回答
1

@SuperBiasedMan 的答案是为我工作的人,除了导入from flask.ext.script import Manager, Server不起作用,因为它已被弃用(作为烧瓶 github 上的一个问题显示:https ://github.com/pallets/flask/issues/1135#问题评论-61860862

因此,如果您仍在苦苦挣扎,请尝试from flask_script import Manager, Server改用。

此外,在 Linux 上,不需要创建“基本”应用程序,只需创建__init__.py文件并制作manage.py文件即可。

于 2022-02-22T18:30:28.787 回答