使用Uvicorn启动FastAPI时pyodbc模块找不到问题求助
解决pyodbc模块找不到的问题
核心原因
直接运行脚本和uvicorn命令调用的不是同一个Python环境,导致后者无法找到已安装的pyodbc模块。
具体解决步骤
确认Python环境路径
在你的FastAPI脚本开头添加一行代码:import sys; print(sys.executable),直接运行脚本后记下输出的Python路径(比如/Users/xxx/venv/bin/python或C:\Users\xxx\venv\Scripts\python.exe)。用对应环境重新安装pyodbc
使用刚才拿到的Python路径执行pip安装命令,确保模块安装到正确环境:# Linux/macOS示例 /Users/xxx/venv/bin/python -m pip install pyodbc # Windows示例 C:\Users\xxx\venv\Scripts\python.exe -m pip install pyodbc用对应环境的uvicorn启动服务
同样使用该Python环境的uvicorn命令启动,避免调用系统全局的环境:# Linux/macOS示例 /Users/xxx/venv/bin/python -m uvicorn webService:app --host 0.0.0.0 --port 7878 --reload # Windows示例 C:\Users\xxx\venv\Scripts\python.exe -m uvicorn webService:app --host 0.0.0.0 --port 7878 --reload如果你已经激活了虚拟环境,直接运行
uvicorn命令即可(激活后环境变量会自动指向虚拟环境的Python)。验证环境一致性
在终端执行which python(Linux/macOS)或where python(Windows),再执行which uvicorn(Linux/macOS)或where uvicorn(Windows),检查输出的路径是否和脚本打印的Python路径一致。如果不一致,说明当前终端没有切换到正确的虚拟环境。Windows用户额外排查
若使用Windows系统,需确认安装pyodbc的Python版本(32位/64位)和运行uvicorn的版本位数一致。可以执行以下命令查看位数:python -c "import struct; print(struct.calcsize('P') * 8)"
内容的提问来源于stack exchange,提问作者mark stevens
相关产品推荐
相关产品推荐

