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

PyCharm无法识别PYTHONPATH中已定义的包问题排查

PyCharm运行Python Monorepo服务出现ModuleNotFoundError的原因及解决

你的场景中,直接运行命令正常但PyCharm报错,核心原因集中在PyCharm的环境配置与终端环境的差异,具体如下:

可能的原因

  • 未将src目录标记为Sources Root:PyCharm依赖自身的"Sources Root"机制识别Python包根目录,即便手动设置了PYTHONPATH,若未标记该目录,PyCharm运行时可能不会正确将其纳入模块搜索路径,甚至覆盖手动配置的PYTHONPATH。
  • 运行配置的工作目录错误:若PyCharm运行配置的工作目录设为上层的services/而非poller-service/,会导致模块搜索路径的相对位置偏差(尤其PYTHONPATH为相对路径时),引发导入失败。
  • 启动命令参数顺序错误:你提供的PyCharm启动命令中,-m uvicorn放在了main.py路径之后,这会被当成main.py的命令行参数而非Python解释器的参数。若终端运行时你用的是正确的参数顺序(如python -m uvicorn ...),但PyCharm配置错误,就会触发导入问题。
  • Venv环境未同步路径:PyCharm可能未同步.venv解释器的PYTHONPATH设置,导致运行时实际使用的路径与你手动检查的不一致。

对应解决办法

  • 标记Sources Root:右键点击poller-service/src目录 → 选择「Mark Directory as」→「Sources Root」,目录变为蓝色后,PyCharm会自动将其加入模块搜索路径。
  • 修正工作目录:打开PyCharm运行配置(右上角运行按钮下拉菜单→Edit Configurations),找到对应服务配置,将「Working directory」设为poller-service/的绝对路径(如/Users/me/repositories/services/poller-service/)。
  • 调整启动参数顺序:
    • 若用uvicorn直接运行app模块:将运行配置的「Script path」留空,「Module name」填写uvicorn,「Parameters」中填入mycompany.poller.api.app:app --port 8006 --reload。
    • 若运行main.py:移除命令中的-m uvicorn参数,因为main.py已自行导入并启动app。
  • 同步Venv路径:打开「File→Settings→Project: poller-service→Python Interpreter」,点击右上角齿轮→「Show All」,选中.venv解释器,点击「Show paths for the selected interpreter」,若缺少poller-service/src路径则点击+添加,保存后重启运行配置。

内容的提问来源于stack exchange,提问作者CrazySynthax

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:57:29