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/Python.framework/Versions/3.10/lib/python3.10/collections/__init__.py)
I have tried all the troubleshooting but none of them worked. Please advise. Here is the full stack:
As Mitra said above, change:
from collections import Mapping
to
from collections.abc import Mapping
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 https://stackoverflow.com/a/69727802/13994294.
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
Use older version of python (eg 3.8)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With