FastAPI项目模块导入错误求助:无需硬编码路径的解决方案
解决方案
1. 使用模块方式运行(推荐)
在项目根目录执行以下命令,替代直接运行python app/run.py:
python -m app.run
这种方式会自动将项目根目录加入Python的模块搜索路径(sys.path),无需手动修改sys.path或设置环境变量,就能正常解析from app.api import...这类绝对导入。
2. 正确配置PYTHONPATH
若坚持使用python app/run.py的运行方式,需确保PYTHONPATH指向项目根目录:
- Windows(CMD):
set PYTHONPATH=C:\Users\iswar\Downloads\Alembic\Alembic python app/run.py - Windows(PowerShell):
$env:PYTHONPATH="C:\Users\iswar\Downloads\Alembic\Alembic" python app/run.py - Linux/macOS:
export PYTHONPATH=/path/to/Alembic python app/run.py
VSCode终端需重启或重新加载环境才能生效,也可在VSCode的settings.json中配置python.envFile,指向包含PYTHONPATH设置的.env文件。
3. 动态获取项目根目录(替代硬编码)
如果不想依赖外部环境配置,可在run.py中动态计算项目根路径,避免硬编码:
import os, sys # 获取当前脚本所在目录(app/文件夹路径) current_script_dir = os.path.dirname(os.path.abspath(__file__)) # 项目根目录是当前目录的上级目录 project_root = os.path.dirname(current_script_dir) sys.path.append(project_root) import uvicorn from fastapi import FastAPI import logging from app.api import routes as api_routes
4. 检查包结构
确保app和app/api文件夹下都存在__init__.py文件(可以是空文件),Python需要这个文件识别文件夹为可导入的包。
内容的提问来源于stack exchange,提问作者Rajesh Mappu
相关产品推荐
相关产品推荐

