python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python模块导入冲突

python模块导入冲突问题解决

作者:FserSuN

本文主要介绍了python模块导入冲突问题解决,通过分析Python模块查找机制和PyCharm的配置,找到了问题根源并提出了解决方案,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

背景

在项目中,我们使用了 src/ 作为源码根目录,并通过 PyCharm 进行开发和调试。项目中存在一个本地模块 src/mcp/,与第三方库 mcp 同名。在使用 uv run 启动项目时一切正常,但通过 PyCharm Debug 启动时却报错:

ImportError: cannot import name 'ClientSession' from partially initialized module 'mcp'

进一步排查发现,PyCharm 会自动将项目路径(如 src/)添加到 sys.path 的前面,导致 Python 优先加载本地模块,从而引发循环导入。

分析思路

行动

1. 分析 sys.path 差异

2. 验证模块加载路径

在代码中添加调试信息:

import mcp
print("mcp module path:", mcp.__file__)

3. 解决方案

✅ 方法一:重命名本地模块

将 src/mcp/ 改名为 src/mcp_client/

mv src/mcp src/mcp_client

更新所有引用:

# 原来:
from src.mcp import AuthenticatedMCPClient

# 修改为:
from src.mcp_client import AuthenticatedMCPClient

✅ 方法二:调整 PyCharm 配置

✅ 方法三:手动调整 sys.path 优先级

在 server.py 开头添加:

import sys

site_packages = "/Users/sunfei13/gitRepo/srpa-deerflow/srpsa-deerflow/.venv/lib/python3.12/site-packages"
if site_packages in sys.path:
    sys.path.remove(site_packages)
    sys.path.insert(0, site_packages)

结果

通过以上排查,通过方法二排查解决本地调试问题,过程总结如下:

最终,项目在 uv run 和 PyCharm Debug 下均能正常启动,避免了模块冲突和循环导入问题。

到此这篇关于python模块导入冲突问题解决的文章就介绍到这了,更多相关python模块导入冲突内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文