IntelliJ IDEA中Python调用json.loads报AttributeError错误
问题根因
这个报错和IntelliJ IDEA本身无关,核心原因是IDEA运行Python脚本时默认会把当前项目根目录放在模块搜索路径sys.path的最高优先级,如果你项目里存在自己命名的json.py文件、或是名为json的自定义Python包,就会覆盖Python标准库的json模块,此时你调用的json.loads实际是找你自定义的那个文件里的方法,自然找不到就抛错。
VSCode、Databricks环境运行正常,是因为这两个环境的模块搜索路径优先级和IDEA配置不一致,没有优先加载到你项目里的同名冲突文件。
排查&修复步骤
- 第一步:确认加载的json模块实际来源
在你运行的脚本最开头加以下代码,在IDEA中执行:
如果输出路径不是当前Python解释器安装目录下的import json print(json.__file__)lib/json/__init__.py(比如输出路径是你自己项目文件夹下的json.py),即可确认是命名冲突问题。 - 第二步:解决命名冲突
- 找到项目里自定义的
json.py文件/json自定义包,重命名为非标准库同名的名称,比如json_utils.py - 删除项目中所有
__pycache__缓存文件夹,避免旧的编译缓存导致冲突残留
- 找到项目里自定义的
- 第三步:校验IDEA环境配置
- 打开
File > Project Structure > SDKs,确认当前选择的Python解释器和你VSCode、Databricks使用的解释器版本、路径一致,不要误选到装了冲突第三方包的环境 - 打开
Run > Edit Configurations,找到你当前运行的脚本配置项,检查Working directory配置是否正确,同时确认PYTHONPATH配置里没有把包含自定义json文件的无关目录放在最前面
- 打开
避坑提示
不要给自定义的Python脚本、包起和Python标准库同名的名称,除了json之外,random、re、datetime、os、csv等都是高频重名冲突的模块名,同名时Python会优先加载工作目录下的自定义文件,直接导致标准库功能调用失败。
内容的提问来源于stack exchange,提问作者Jelena Ajdukovic
相关产品推荐
相关产品推荐

