FastAPI程序在我的VSCode上不能运行?
在VSCode中,有许多人在尝试使用FastAPI和运行ASGI服务器时得到过这样的报错:
uvicorn : 无法将“uvicorn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ uvicorn
+ ~~~~~~~
+ CategoryInfo : ObjectNotFound: (uvicorn:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
然而根据网络上现有解答方案(稍后会给出),并不能解决该问题,在一系列的搜索和调试之下,得到了在VSCode中可以正确运行FastAPI的解决方法!
安装uvicorn
首先,安装uvicorn.
pip3 install uvicorn[standard]
uvicorn是一个基于asyncio开发的轻量级、高效的Web服务器框架,它是ASGI服务器的一种实现,专门用于运行异步Python Web应用程序。这是运行FastAPI应用的必须。
配置系统环境变量Path
这里用win11做演示,win10类似,更早的版本可以自行寻找。
先行在VSCode终端中运行如下指令:
pip3 show uvicorn
得到的输出应当如下:
Name: uvicorn
Version: 0.29.0
Summary: The lightning-fast ASGI server.
Home-page:
Author:
Author-email: Tom Christie <tom@tomchristie.com>
License:
Location: C:\Users\your_user_name\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages
Requires: click, h11
Required-by:
就可以得到uvicorn的路径:
C:\Users\your_user_name\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages
打开高级系统设置,如下:
点击环境变量,进入:
编辑Path:
- 新建一个环境变量规则
- 将
uvicorn的路径粘贴进去 - 确定,并依次保存
编辑launch.json文件
在VSCode中点击“运行和调试”,编辑launch.json文件,请确保你在你的FastAPI程序文件夹下。
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.29.0",
"configurations": [
{
"name": "Python: Uvicorn", # 指定使用uvicorn模块来启动应用。
"type": "python",
"request": "launch",
"module": "uvicorn",
"args": # 该数组包含了传递给 uvicorn 的命令行参数
[
"your_application:app",
"--reload", # 在代码更改时自动重启服务器
"--host",
"0.0.0.0",
"--port",
"8000" # 指定服务器的主机和端口
],
"console": "integratedTerminal" # 指定在 VS Code 的集成终端中运行服务器
}
]
}
将 "your_application:app" 替换为你的 ASGI 应用的模块和应用实例的名称。例如,如果你的应用定义在 main.py 文件中,并且你的 ASGI 应用实例名为 app,那么你应该将其替换为 "main:app"。
保存该launch.json文件,使用快捷键Ctrl+Shift+D启动你的应用。
测试
以上配置完成后,访问http://127.0.0.1:8000,就可以访问你的本地Web服务了!