DeepSeek-VL icon indicating copy to clipboard operation
DeepSeek-VL copied to clipboard

ImportError: cannot import name 'Mapping' from 'collections'

Open NickLucche opened this issue 1 year ago • 3 comments
trafficstars

Hey, thanks a lot for sharing this great accomplishment with the community! I have just tried running the cli_chat on Python3.11 and I get ImportError: cannot import name 'Mapping' from 'collections' at https://github.com/deepseek-ai/DeepSeek-VL/blob/main/deepseek_vl/models/modeling_vlm.py#L21. I believe this is due to attrdict being broken with python3.10+ https://stackoverflow.com/questions/72361026/how-can-i-get-attrdict-module-working-in-python.

Easiest thing would be to update Readme/requirements to specify >=python3.8, <3.10.

NickLucche avatar Mar 11 '24 14:03 NickLucche

I solved it by patching collections before loading deepseek_vl

Something like:

# Monkey patch collections
import collections
import collections.abc
for type_name in collections.abc.__all__:
    setattr(collections, type_name, getattr(collections.abc, type_name))

from deepseek_vl.models import VLChatProcessor, MultiModalityCausalLM

if you want to stay on Python 3.10.

Fodark avatar Mar 11 '24 16:03 Fodark

I did a bit of hardway... went to each of the files in the lib folders and moded it...

  • aimachine/lib/python3.10/site-packages/attrdict/default.py
  • aimachine/lib/python3.10/site-packages/attrdict/merge.py
  • aimachine/lib/python3.10/site-packages/attrdict/mixins.py
  • aimachine/lib/python3.10/site-packages/attrdict/mapping.py

After doing it, came for posting the solution to find that, there is a smarter solution. Thanks to Fodark.

import collections.abc
for type_name in collections.abc.__all__:
    setattr(collections, type_name, getattr(collections.abc, type_name))

insightbuilder avatar Mar 12 '24 13:03 insightbuilder

Fixed in #21

Fodark avatar Mar 14 '24 16:03 Fodark