I am trying to connect to Postgress and create a folder test.db via Flask. When I run "python3" in the terminal and from there when I run "from app import db" I get an import error:
ImportError: cannot import name 'Mapping' from 'collections' (/Library/Frameworks/)I have tried all the troubleshooting but none of them worked. Please advise.
Here is the full stack:
10 Answers
As Mitra said above, change:
from collections import Mappingto
from collections.abc import Mapping 1 As stated by others, this is caused by a change in the collections interface starting with Python 3.10. As far as I can see there are three options to mitigate this issue so far:
Revert to Python 3.9.
If the error occurs in a third-party library, try to update this library first (
pip install <package> --upgrade).Patch the code manually.
For patching the
ImportError, see .
Use older version of python (eg 3.8)
4That's about python version. in most time python 3.10 have this problems.
You can solve this problem with use python 3.9 or 3.8 version. or if error from packages like python-docx or other packages about MS you can probably solve it by using pipwin.
As rightly pointed out, you need to import from the new abc module inside of collections for later versions of Python.
If you need to make your code backwards compatible with older versions of Python, you can use this:
try: from collections.abc import Mapping
except ImportError: from collections import Mapping Same here, but I resolved the problem with:
pip3 list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip3 install -U This wi
Youc could try from typing import Mapping as an alternative.
You will encounter this problem starting Python version 3.8. You could either use Python version 3.7.9 and earlier or refer to John's answer above and make the change in the outdated import statement.
2In my environment the problem was solved using bug fix Python version 3.10.2
Just update to requests 2.27.1 and python 3.10.2 or later, and the problem will be fixed.
3