如何通过命令行Flask run启动Flask和Flask SocketIO

如何通过命令行Flask run启动Flask和Flask SocketIO,flask,Flask,我从一个定义了多个Web服务的应用程序开始。我可以通过命令行上的flask run启动应用程序。之后,我集成了flask sckoetio(即,我添加了flask_socketio import socketio、emit和socketio=socketio(应用程序))中的行),现在我无法再通过flask run启动服务器了 from flask import Flask, request, abort from flask_socketio import SocketIO, emit a

我从一个定义了多个Web服务的应用程序开始。我可以通过命令行上的
flask run
启动应用程序。之后,我集成了flask sckoetio(即,我添加了flask_socketio import socketio、emit和socketio=socketio(应用程序))中的行
),现在我无法再通过
flask run启动服务器了

from flask import Flask, request, abort
from flask_socketio import SocketIO, emit


app = Flask(__name__)
socketio = SocketIO(app)

@app.route('/do_sth', methods=['POST'])
def do_sth():
    return ""
我在控制台上收到以下消息:

 * Serving Flask-SocketIO app "webservices.py"
 * Forcing debug mode off
WebSocket transport not available. Install eventlet or gevent and gevent-websocket for improved perform
ance.
c:\program files\python36\lib\site-packages\flask_socketio\__init__.py:496: Warning: Silently ignoring
app.run() because the application is run from the flask command line executable.  Consider putting app.
run() behind an if __name__ == "__main__" guard to silence this warning.
  use_reloader=use_reloader, **kwargs)
因此,我将代码更新为:

from flask import Flask, request, abort
from flask_socketio import SocketIO, emit


app = Flask(__name__)
socketio = SocketIO(app)

@app.route('/do_sth', methods=['POST'])
def do_sth():
    return ""

if __name__ == '__main__':
    socketio.run(app)
但我仍然收到相同的错误消息,服务器没有启动。但是,如果我只是执行脚本,一切都会正常工作。但是为什么不再可以运行烧瓶?

是否安装了或,错误消息中提到了

它们也列在中的要求下。 试着先安装它们


安装其中一个之后,您只需使用
flask run
启动应用程序。

之所以发生这种情况,是因为变量
\uuuuuu name\uuuuuu
仅在使用类似
python file.py的命令直接调用文件时,才等于
“\uuu main\uuuuu”
。但您的文件已导入,并且他的
\uuu name\uu
变量被设置为导入它们的模块的名称

解决方案:

只要删除字符串
if\uuuuuu name\uuuuuu==“\uuuuuu main\uuuuuuu”: