我有一个Python Flask应用程序,并且有许多运行我的应用程序时需要设置的环境变量。我通常是这样运行我的应用的...
python3 -m app.py
我想要这样做,以便可以设置应用程序需要的所有环境变量,这样就不必在每次重新打开终端时都导出。如果它可以是特定于工作区的或特定于项目的,那将是很好的。
我知道像Pycharm这样的其他编辑器也可以做类似的事情,并且想知道如何在VS Code中做到这一点?
答案 0 :(得分:3)
如果它是Flask应用程序,则可以创建 launch.json 配置,该配置将允许您run your Flask app in VS Code's debugger。启动配置支持许多选项,包括设置Flask应用所需的环境变量。
从安装Python extension for VS Code开始,添加对{<3}}的“ 调试多种类型的Python应用程序的支持”。然后,遵循{{3} },请参见VS Code文档。
基本上,您需要在工作区的 .vscode 文件夹中创建 launch.json 文件。
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "run-flask-app",
"type": "python",
"request": "launch",
"module": "flask",
"env": {
"FLASK_APP": "/path/to/app.py",
"FLASK_ENV": "development",
"FLASK_DEBUG": "0",
"AAA": "ENV AAA",
"BBB": "ENV BBB",
"CCC": "ENV CCC"
},
"args": [
"run",
"--no-debugger",
"--no-reload"
],
"jinja": true
},
]
}
在env
部分中设置所有环境变量。默认情况下,它包含与FLASK_*
相关的必需变量,因为它使用includes Flask来运行应用程序。
在这里,作为示例,我还设置了自定义AAA
和BBB
和CCC
var。您可以像普通的env vars一样从代码中访问它:
@app.route('/')
def root():
aaa=os.getenv("AAA")
bbb=os.getenv("BBB")
ccc=os.getenv("CCC")
return f'{aaa}, {bbb}, {ccc}'
然后从“调试”面板运行它:
只需单击播放按钮,您就可以从“终端”面板中查看日志。 (如果您有多个终端,它应该显示在 Python调试控制台下)。
最后,通过将 .vscode / launch.json 文件保存在工作区文件夹下,则它是特定于工作区的,并且只会影响用于启动Flask应用程序的运行时环境。
答案 1 :(得分:0)
@Gino Mempin 我已经纠正了。问题是我错误地期望表达式被评估,我将变量设置为 - 想想像 "env": {"VAR": "dirname ${workspaceFolder}"}
这样的东西,VC 代码默默地按照所写的方式执行 - 将 VAR 设置为字符串而不对其进行评估。< /p>