一篇能让你的FastAPI程序在VSCode上成功运行的文章

1,723 阅读2分钟

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

打开高级系统设置,如下:

image.png

点击环境变量,进入:

image.png

编辑Path:

image.png

  1. 新建一个环境变量规则
  2. uvicorn的路径粘贴进去
  3. 确定,并依次保存

编辑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服务了!