使用 VisualStudio 代码,使用 anaconda 创建虚拟环境,并启动一个简单的 Flask 应用程序。
一切正常,但我希望能够看到刷新网站时所做的更改,而不是必须退出并重新启动应用程序。
这是我的简单应用程序:
'''Application Factory'''
import os
from flask import Flask, render_template, url_for
app = Flask(__name__)
#app.config['DEBUG'] = True #tried this did not work
@app.route("/")
def home():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True) #also tried app.run(debug=True, use_reloader=True)
即使我已经设置了
debug=True
,当我进入终端并使用“python -m flask run
”启动它时
我收到以下消息:
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
尽管我已经打开了调试,但看起来它仍在生产中。
后来我尝试了
export FLASK_ENV=development
并得到以下错误:
export : The term 'export' is not recognized as the name of a cmdlet, function, script file, or
operable program. Check the spelling of the name, or if a path was included, verify that the path
is correct and try again.
At line:1 char:1
+ export FLASK_ENV=development
+ ~~~~~~
+ CategoryInfo : ObjectNotFound: (export:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
有什么想法吗?我做错了什么?
您在 Windows 上工作,您应该使用 set 命令。
set FLASK_ENV=development
除了使用 Windows 命令之外,这里还有两种解决方案:
使用
FLASK_ENV=development
设置 .env 文件。这将使您不必在全局或每次打开项目时手动设置 FLASK_ENV。有关 .env 或 python dotenv 配置的更多信息可以在here找到。
请转移到 Windows Subsystem for Linux。您可以打开当前挂载的目录(mnt/c/users/.../projectdir)或将该目录复制到实际的Linux目录(/home/username/.../projectdir)中。后者(复制到 Linux)在性能和最佳实践方面更受青睐。鉴于您正在学习的教程可能是针对 bash 命令的,如果您不想继续将命令转换为 Windows,这可以为您节省一些麻烦。
我可以使用此 launch.json 配置文件调试和重新加载(热重载)我的 Flask 项目。
因此,按 F5(调试)并保持调试模式全天打开。只需更改您的代码即可享受。这适用于 Windows 11,无需 WSL。请注意,这不会刷新浏览器中的页面,它只会在调试运行时重新加载 python 文件,但刷新页面时会加载更改。
.vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Python Debugger: Flask",
"type": "debugpy",
"request": "launch",
"module": "flask",
"env": {
"FLASK_APP": "app",
"FLASK_DEBUG": "1",
"FLASK_ENV": "development"
},
"autoReload": {
"enable": true,
"pattern": [
"**/*.py"
]
},
"args": [
"run",
"--no-debugger",
"--no-reload"
],
"jinja": true
}
]
}