PyCharm运行OasisLMF项目脚本时报platform模块属性缺失错误
问题成因
这个报错的根因是当前项目目录下存在与Python标准库同名的platform模块,触发了Python的模块遮蔽机制:
Python导入模块时会按「当前工作目录 > PYTHONPATH配置路径 > 标准库路径 > 第三方库site-packages路径」的顺序搜索,只要当前项目里存在名为platform.py的脚本,或是带__init__.py的platform文件夹,执行import platform时就会优先加载这个自定义模块,而非系统自带的标准库platform。
报错链路里的attrs库(pytest的依赖)需要调用标准库platform.python_implementation()方法判断当前运行的Python解释器类型,你项目里被错误加载的自定义platform模块没有实现这个方法,就会抛出对应的AttributeError。
你在堆栈里没找到同名冲突文件是正常现象:模块遮蔽发生在导入环节,报错栈只会记录调用方法的attrs库代码位置,不会显示被错误加载的自定义模块路径。其他项目运行正常也符合这个故障特征——只有当前项目目录下存在这个冲突文件。
解决方法
按以下顺序排查操作即可:
- 定位冲突文件
在当前OasisLMF项目根目录全局搜索platform.py文件和名为platform的文件夹,搜索时排除venv虚拟环境目录,重点排查自己写的业务代码、测试用例目录。 - 处理冲突文件
找到冲突的自定义文件/文件夹后直接重命名,比如改成platform_util.py、custom_platform.py这类不与标准库重名的名称即可。 - 清理运行缓存
删除项目下所有__pycache__文件夹,清除旧的字节码缓存,避免缓存导致问题复现。 - 兜底方案(上述步骤无效时使用)
如果重命名后问题依旧,说明当前虚拟环境可能存在依赖损坏,关闭PyCharm后删除项目根目录的venv文件夹,执行以下命令重建虚拟环境:
重启PyCharm后选择新建的虚拟环境作为项目解释器即可。python3 -m venv venv # 激活虚拟环境后重新安装项目依赖 pip install -r requirements.txt
内容的提问来源于stack exchange,提问作者max89
相关产品推荐
相关产品推荐

