You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI+Uvicorn运行时core模块找不到问题求助

解决FastAPI集成时ModuleNotFoundError: No module named 'core'问题

问题出在Python的模块查找路径差异上:

  • 单独运行twitter_spider.py时,Python会自动将脚本所在目录(或执行命令时的当前工作目录)加入模块查找路径sys.path,因此能找到同级的core目录。
  • 通过uvicorn启动FastAPI服务时,入口是main.py,此时Python的模块查找路径以main.py所在的项目根目录为准,但twitter_spider.py位于services子目录中,当它执行from core import ...的绝对导入时,若core目录不在Python的查找路径中,就会触发模块找不到的错误。

解决方案

方法1:手动添加项目根目录到查找路径

修改twitter_spider.py,在导入core模块前,将项目根目录加入sys.path:

import sys
from pathlib import Path

# 获取项目根目录(假设services目录直接在根目录下)
project_root = Path(__file__).parent.parent
sys.path.append(str(project_root))

# 后续原导入代码不变
from core import Twitter_Conecction
from core import config

# 其余代码...

这种方法无需调整运行方式,单独运行和FastAPI集成都能正常工作。

方法2:使用相对导入(需调整运行方式)

如果项目是标准包结构(所有目录下都有__init__.py文件),可将twitter_spider.py的导入改为相对路径:

from ..core import Twitter_Conecction
from ..core import config

注意:使用相对导入后,不能直接运行twitter_spider.py,需从项目根目录执行:

python -m services.twitter_spider

方法3:设置PYTHONPATH环境变量

启动uvicorn前,将项目根目录添加到PYTHONPATH环境变量中:

  • Linux/macOS终端:
    export PYTHONPATH="/你的项目根目录路径"
    uvicorn main:app --reload
    
  • Windows命令提示符:
    set PYTHONPATH=C:\你的项目根目录路径
    uvicorn main:app --reload
    
  • Windows PowerShell:
    $env:PYTHONPATH = "C:\你的项目根目录路径"
    uvicorn main:app --reload
    

设置后,Python会自动在指定路径下查找core模块。

方法4:将项目安装为可编辑包

在项目根目录下创建pyproject.toml文件(示例内容如下),然后将项目安装为可编辑包:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "your-project-name"
version = "0.1.0"
packages = ["core", "services", "models", "config", "schema"]

执行安装命令:

pip install -e .

这样core会被当作Python标准安装包,任何位置都能正常导入。

内容的提问来源于stack exchange,提问作者Sir-Sorg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 15:27:37