You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安装serialized-redis-interface后导入dict_merge报错求助

解决ImportError: cannot import name 'dict_merge' from redis.client

问题场景

分别在Python 3.6和3.9环境中安装serialized-redis-interface后,原本可正常运行的代码突然报错,安装过程无异常提示。

安装过程日志

pip install serialized-redis-interface
Collecting serialized-redis-interface
  Using cached serialized_redis_interface-0.3.1-py3-none-any.whl (7.8 kB)
Requirement already satisfied: redis>3 in /home/idf/anaconda3/envs/works/lib/python3.6/site-packages (from serialized-redis-interface) (4.3.5)
Requirement already satisfied: packaging>=20.4 in /home/idf/anaconda3/envs/works/lib/python3.6/site-packages (from redis>3->serialized-redis-interface) (21.3)
Requirement already satisfied: typing-extensions in /home/idf/anaconda3/envs/works/lib/python3.6/site-packages (from redis>3->serialized-redis-interface) (4.1.1)
Requirement already satisfied: importlib-metadata>=1.0 in /home/idf/anaconda3/envs/works/lib/python3.6/site-packages (from redis>3->serialized-redis-interface) (4.8.3)
Requirement already satisfied: async-timeout>=4.0.2 in /home/idf/anaconda3/envs/works/lib/python3.6/site-packages (from redis>3->serialized-redis-interface) (4.0.2)
Requirement already satisfied: zipp>=0.5 in /home/idf/anaconda3/envs/works/lib/python3.6/site-packages (from importlib-metadata>=1.0->redis>3->serialized-redis-interface) (3.6.0)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /home/idf/anaconda3/envs/works/lib/python3.6/site-packages (from packaging>=20.4->redis>3->serialized-redis-interface) (3.0.9)
Installing collected packages: serialized-redis-interface
Successfully installed serialized-redis-interface-0.3.1

报错代码片段

import serialized_redis

def connect_redis(redis_host, redis_port, redis_password):

    print("Connecting redis")

    try:
        # decode_repsonses参数用于将Redis响应转换为Python字符串,默认编码utf-8
        redis_connection_object = serialized_redis.JSONSerializedRedis(host=redis_host, port=redis_port, password=redis_password, db=0)
        if None == redis_connection_object:
            print("redis is not connected")
        return redis_connection_object
    except Exception as e:
        print(e)
        return None

错误栈信息

Traceback (most recent call last):
  File "options.py", line 42, in <module>
    from redis_connection import connect_redis
  File "/home/idf/Downloads/backup/amplify/redis_connection.py", line 1, in <module>
    import serialized_redis
  File "/home/idf/anaconda3/envs/works/lib/python3.6/site-packages/serialized_redis/__init__.py", line 5, in <module>
    from redis.client import string_keys_to_dict, dict_merge
ImportError: cannot import name 'dict_merge'

解决方案

问题根源

serialized-redis-interface 0.3.1版本的依赖声明为redis>3,会自动安装最新的redis 4.x版本,但dict_merge函数在redis-py 4.x版本中已被移除,导致库导入失败。

修复步骤

  1. 卸载当前高版本redis:
pip uninstall redis -y
  1. 安装兼容的redis 3.x版本(例如3.5.3):
pip install redis==3.5.3
  1. 重新运行代码即可恢复正常。

后续规避

可以在requirements.txt中锁定版本组合,避免后续依赖更新再次触发兼容问题:

serialized-redis-interface==0.3.1
redis==3.5.3

内容的提问来源于stack exchange,提问作者Ivan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 15:05:33