本文环境:centos 7,Python3编译安装成功,包括pip3,然后需要安装redis相关的Python3驱动包,本的redis指redis包而非redis数据库,rediscluster类似。

先理清楚几个概念

1,redis包更准确地说是redis-py包,是Python连接Redis的驱动文件,如果下载原始文件的话,文件名称就是redis-py-***.tar.gz

2,rediscluster 包更准确地说是redis-py-cluster包,是Python连接Redis Cluster(Redis集群)的驱动文件

3,rediscluster包依赖于redis包,也就是说rediscluster包连接Redis集群的时候需要依赖redis包

4,这两个包可以单独pip(pip3)安装,但是安装rediscluster包的时候redis包会被自动安装

这是三者之间的关系,其实不太绕,但是名字非常操蛋!!!再加上pip安装造成的一系列问题,就更操蛋了(可能跟具体的yum源有关,某些yum源就没有问题)。

这里EC2是京东提供的服务器,默认使用的京东云的yum源

槽点1

糟糕的命名规则,很早就想吐槽了,为什么Python的MySQL驱动包名是pymysql,Python的SQL Server驱动是pymssql,而Python的redis驱动名称是redis(不更应该叫pyredis么)。

而redis这个驱动又不支持集群的链接,支持集群连接的驱动包名是rediscluster,这样很容易给人以误解,为什么不像其他包一样加上一个py前缀,pyredis,pyredisclsuter,这样是不是不会清晰很多。

槽点2

pip安装redis-py-cluster,会自动安装最新版的redis-py-cluster 2.0.0,同时会自动安装其依赖的redis(redis-py)驱动包,redis(redis-py)包的版本是最新的3.0.1

问题是,这样自动安装完成后,压根用不了

from rediscluster import StrictRedisCluster会提示错误,如上:File "", line 1, in ImportError: cannot import name 'StrictRedisCluster'

然后通过源码包观察setup.py中的依赖信息,似乎也没有问题,要求redis驱动的版本是3.0.0~3.1.0,也似乎没有问题,可惜就是无法正常导包。https://github.com/Grokzen/redis-py-cluster/releases这里是源码包的地址

槽点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

tar xf redis-py-cluster-1.3.5.tar.gz

cd redis-py-cluster-1.3.5

python3 setup.py install

他这里命名告诉best match:redis 3.0.1,

然后再次尝试导包from rediscluster import StrictRedisCluster,仍旧会出现如下错误。

>>>from rediscluster import StrictRedisCluster

Traceback (most recent calllast):

File"", line 1, in File"/usr/local/redis-py-cluster-1.3.5/rediscluster/__init__.py", line 7, in from .client import StrictRedisCluster, RedisCluster

File"/usr/local/redis-py-cluster-1.3.5/rediscluster/client.py", line 10, in from .connection import (

File"/usr/local/redis-py-cluster-1.3.5/rediscluster/connection.py", line 11, in from .nodemanager import NodeManager

File"/usr/local/redis-py-cluster-1.3.5/rediscluster/nodemanager.py", line 12, in 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.5,需要提前先安装好redis 2.10.6,不要让redis-py-cluster-1.3.5自行安装一个不兼容的redis(redis-py)包

单独安装redis-py-cluster-1.3.5又会自动安装redis-3*版本的包,结果导包的时候还是会出错。

后续经过尝试,只有redis-py-cluster-1.3.6的在安装的时候(没有提前安装任何redis包),会自动安装对应的redis版本(redis-2.10.6)

总结:

1,结论先行的话就是:不要使用直接pip自动安装redis,redis-py-cluster这两个包,也不要直接pip单独安装redis-py-cluster,自动安装的两个包因为版本冲突无法正常使用。

2,1)可以下载指定的redis-py包(redis-py-2.10.6),redis-py-cluster(redis-py-cluster-1.3.5.tar.gz)包,分别手动安装。

2)也可以单独下载的redis-py-cluster 1.3.6安装,安装是可以成功下载其依赖的redis包的正确的版本。

3,最新版的redis驱动包是不支持redis-py-cluster的,包括使用pip自动安装(升级)redis,redis-py-cluster,出来之后是无法导包成功的(from rediscluster import StrictRedisCluster)。

4,对于redis,redis-py-cluster,最好最好最好手动下载对应版本的包,手动安装。

5,Python的Redis包括Redis集群连接驱动包的命名真的很蛋疼。

python扩展包rediscluster集群_令人抓狂的redis和rediscluster Python驱动包的安装相关推荐

  1. k8s 手动恢复redis 集群_高工面试之:redis的几种集群方式你都熟悉吗?

    Redis三种集群方式:主从复制.哨兵模式和Cluster模式 一.主从复制模式 Redis配置成主从模式,主库(Master)只负责客户端的写数据,从库(Slave)只负责客户端的读数据. 主从数据 ...

  2. python自动化部署hadoop集群_大数据集群的自动化运维实现思路

    原标题:大数据集群的自动化运维实现思路 | 作者简介 王晓伟 知数堂<大数据实战就业>课程讲师 六年大数据相关工作经验 清华大学软件工程硕士 曾就职于网易.搜狗等互联网企业 从事大数据及数 ...

  3. Redis-cluster集群【第一篇】:redis安装及redis数据类型

    Redis介绍: 一.介绍 redis 是一个开源的.使用C语言编写的.支持网络交互的.可以基于内存也可以持久化的Key-Value数据库. redis的源码非常简单,只要有时间看看谭浩强的C语言,在 ...

  4. down redis集群_硬核干货!Redis 分布式集群部署实战

    原理: Redis集群采用一致性哈希槽的方式将集群中每个主节点都分配一定的哈希槽,对写入的数据进行哈希后分配到某个主节点进行存储. 集群使用公式(CRC16 key)& 16384计算键key ...

  5. 搭建第一个SpringBoot工程;SpringBoot整合mybatis;SpringBoot整合Redis-cluster集群;SpringBoot整合EhCache;

    写在前头,以下内容主要是为了自己复习之用,如果你有幸看到这篇文章,请不要嫌弃某些地方有所跳跃或省略. 1. 搭建第一个SpringBoot工程 1.1 创建工程 1.2 初始pom.xml文件内容 1 ...

  6. python连接redis集群如何释放内存_python 连接 redis cluster 集群

    一. redis集群模式有多种, cluster模式只是其中的一种实现方式, 其原理请自行谷歌或者百度, 这里只举例如何使用Python操作 redis cluster 集群 二. python 连接 ...

  7. Redis 集群_主从复制_哨兵模型

    1 redis集群简介 1.1 集群的概念 所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定.高效的状态. 1.1.1 使用redis集群的必要性 问题:我们已经部署好了 ...

  8. redis依赖包_092-Redis集群、JedisCluster

    1. Redis集群-创建Redis集群 (1) 如何搭建Redis集群? 需求: 搭建一个 Redis 的最小集群,使用伪集群方式. Redis 中最小的集群三对主从. 在 192.168.224. ...

  9. 使用Amazon CDK部署基于Amazon Fargate的高可用、易扩展的Airflow集群

    前言 Apache Airflow(以下简称为Airflow) 是一项由Airbnb在 2014 年推出的开源项目,其目的是为了管理日益复杂的数据管理工具.脚本和分析工具,提供一个构建批处理工作流的方 ...

最新文章

  1. 博士生宿舍条件太好,本科生因疫情暂住惊到结巴!网友:不然咱读个博?
  2. python使用符号 表示单行注释-Python注释符号(多行注释和单行注释)用法详解...
  3. Win10 Anaconda下TensorFlow-GPU环境搭建详细教程(包含CUDA+cuDNN安装过程)(转载)...
  4. sklearn数据集变换
  5. databasemetadata获取表注释_宏基因组测序中短序列的注释
  6. 无向图求割点(找桥)tarjan
  7. android 软件盘弹回去的最好体验,Android 软键盘弹出 日常填坑
  8. 克鲁斯卡尔算法c语言,Kruskal算法(一)之 C语言详解
  9. 关联容器——map、set
  10. 整除光棍 (20 分)
  11. 昨晚家里停网后,我动了邪念用Python破解了隔壁小姐姐的wifi密码
  12. win2003系统自动登录两法
  13. matlab图像处理低通滤波器,基于matlab数字图像处理之低通滤波器
  14. 如何制作Linux程序启动脚本
  15. 关于sip协议-3PCC-SIPP工具相关及报错
  16. 你听过“费斯汀格法则”吗?多少人因为不懂而被残害!好文!
  17. [美国]《冰雪奇缘》[BD-RMVB.720p.中英双字][2013年高分获奖][奥斯卡提名动画片]
  18. linux 系统找回密码,Linux系统密码忘记后的五种恢复方法
  19. android 超链接事件,Android之捕获TextView超链接
  20. 腾讯云主机学生版 修改主机名

热门文章

  1. C#.Net工作笔记012---c# 文件操作_文件路径操作_随时更新
  2. Windwos命令工作笔记002---windows下tree命令列出文件目录打印到文件中_过滤文件不知道怎么做啊
  3. Linux工作笔记029---Centos7.3 服务器下查看tomcat服务是否启动,重启,查看错误日志等基本操作
  4. kafka集群安装部署
  5. cocos2d-x之Box2d初试
  6. 利用fat jar插件生成可执行jar文件
  7. go get 拉取指定版本_go语言学习笔记-基础知识-3
  8. 随想录(jtag知识点小结)
  9. 嵌入式操作系统内核原理和开发(实时调度)
  10. suse linux修改ftp端口,suse Linux系统下的网络设置(ftp telnet xmanager)