Python Flask 脚本在作为 .pyw 文件运行时自动关闭(包括解决方法)

Ste*_*vić 5 python flask python-3.x

问题

我创建了一个基本的 python 脚本,使用 Flask 渲染 HTML 页面。在 Windows 10 上,该脚本可以完美地作为*.py文件运行,但当作为*.pyw文件运行时,页面不会呈现。

在任务管理器中,以*.pyw形式运行脚本后,Python 实例会在几秒钟内打开和关闭。


代码

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def main():
    return render_template('index.html')

if __name__ == '__main__':
    app.run(debug=True, host="0.0.0.0", port=80)
Run Code Online (Sandbox Code Playgroud)

解决方法

运行*.py版本,并将以下行添加到代码中:

import ctypes
...
...
...
if __name__ == '__main__':
  cytypes.windll.user32.ShowWindow(ctypes.windll.kernel32.GetConsoleWindow(), 0)
  app.run(debug=True, host="0.0.0.0", port=80)
Run Code Online (Sandbox Code Playgroud)

上面的代码隐藏了控制台,并成功启动了 Flask 应用程序。


但是,如果有人有想法,我仍然对解释为什么*.pyw方法不起作用感兴趣。

Lou*_*ger 4

.pyw-files 将运行在pythonw.exe而不是python.exe. 不同之处在于,pythonw.exe默认情况下它不在控制台中运行,而是异步运行。这意味着 Flask 在后台启动并运行,直到其他一切终止。由于您的应用程序中没有任何其他内容,因此程序会直接结束。