ImportError: cannot import name 'loads' from 'json' (unknown location)
vshuraeff opened this issue · comments
something wrong if I try use module from boto3
under python 3.7.5
.
I think its because built-in module json
now does not support method loads
.
also it would be cool of jmespath can detect ujson
automatically
Traceback (most recent call last):
File "~/work/route53/route53_sync.py", line 5, in <module>
import boto3
File "~/work/venv/lib/python3.7/site-packages/boto3/__init__.py", line 16, in <module>
from boto3.session import Session
File "~/work/venv/lib/python3.7/site-packages/boto3/session.py", line 17, in <module>
import botocore.session
File "~/work/venv/lib/python3.7/site-packages/botocore/session.py", line 31, in <module>
import botocore.client
File "~/work/venv/lib/python3.7/site-packages/botocore/client.py", line 16, in <module>
from botocore import waiter, xform_name
File "~/work/venv/lib/python3.7/site-packages/botocore/waiter.py", line 13, in <module>
import jmespath
File "~/work/venv/lib/python3.7/site-packages/jmespath/__init__.py", line 1, in <module>
from jmespath import parser
File "~/work/venv/lib/python3.7/site-packages/jmespath/parser.py", line 30, in <module>
from jmespath import lexer
File "~/work/venv/lib/python3.7/site-packages/jmespath/lexer.py", line 3, in <module>
from json import loads
ImportError: cannot import name 'loads' from 'json' (unknown location)
In our case, it was the file name json.py
. renaming the file name fixed the issue
Hi @vshuraeff, as @smitthakkar1 noted, this is due to something in your path overwriting the json
namespace. json
does provide a loads
method in all supported versions of Python.