本文环境:centos 7,Python3编译安装成功,包括pip3,然后需要安装redis相关的Python3驱动包,本的redis指redis包而非redis数据库,rediscluster类似。 先理清楚几个概念
槽点1 糟糕的命名规则,很早就想吐槽了,为什么Python的MySQL驱动包名是pymysql,Python的SQL Server驱动是pymssql,而Python的redis驱动名称是redis(不更应该叫pyredis么)。 槽点2 pip安装redis-py-cluster,会自动安装最新版的redis-py-cluster 2.0.0,同时会自动安装其依赖的redis(redis-py)驱动包,redis(redis-py)包的版本是最新的3.0.1
槽点3 那么就卸载redis-cluster-py(没有卸载redis驱动是一个更大的槽点),重新安装其他版本的redis-py-cluster(这里笔者下载的是redis-py-cluster-1.3.5) 通过这里https://github.com/Grokzen/redis-py-cluster/releases下载较低版本的安装包,自行安装,隐约记得之前是1.3.5版本的,这里下载的是redis-py-cluster 1.3.5 >>> from rediscluster import StrictRedisCluster Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/redis-py-cluster-1.3.5/rediscluster/__init__.py", line 7, in <module> from .client import StrictRedisCluster, RedisCluster File "/usr/local/redis-py-cluster-1.3.5/rediscluster/client.py", line 10, in <module> from .connection import ( File "/usr/local/redis-py-cluster-1.3.5/rediscluster/connection.py", line 11, in <module> from .nodemanager import NodeManager File "/usr/local/redis-py-cluster-1.3.5/rediscluster/nodemanager.py", line 12, in <module> from redis._compat import b, unicode, bytes, long, basestring ImportError: cannot import name 'b' >>> 还是是redis-py和redis-py-cluster版本不兼容的问题,然后继续,尝试卸载redis-3.0.1,重新pip安装redis最新版(redis-3.3.11),仍旧报错。 无奈再次卸载redis 3.3.11包,安装redis 2.10.6包
槽点4 后续进过尝试,redis-py-cluster-1.3.5的在安装的时候,仍旧会找到最新的redis版本,结果就是因为redis-py-cluster和redis版本兼容问题,仍旧无法正常导包
后续经过尝试,只有redis-py-cluster-1.3.6的在安装的时候(没有提前安装任何redis包),会自动安装对应的redis版本(redis-2.10.6)
总结: |
|