我已经在CentOs系统上安装了Cassandra数据库。之后,我尝试使用sudo yum install cqlsh命令安装Cqlsh包,并且成功安装。但当我尝试从终端运行cqlsh时,出现以下错误:导入错误:无法导入名称sure_str在代码的某个地方,它试图加载一个包含ensure_str的名为six的库。错误并没有说明它找不到名为six的模块,python解释器可以找到该库,但无法导入它!我试过在谷歌上搜索,但没有一个解决方案对我有效。
Cassandra
sudo yum install cqlsh
cqlsh
ensure_str
six
4dbbbstv1#
经过几个小时的谷歌搜索和与代码的斗争,终于,我找到了解决方案。我打算与其他人分享。显然,问题出在six(v=1.7.3)的新版本上,它与我的系统不兼容。然而,Cassandra将six的最新版本复制到以下路径:/usr/share/cassandra/lib/six-1.7.3-py2.py3-none-any.zip那么cqlsh尝试通过在代码中添加以下行来强制python解释器从该路径导入库。
third_parties = ('futures-', 'six-', 'geomet-') for lib in third_parties: lib_zip = find_zip(lib) if lib_zip: sys.path.insert(0, lib_zip)
无论您的系统上是否安装了其他版本的six,它总是尝试从Cassandra文件夹导入库。因此,我刚刚使用以下命令从cqlsh文件中删除了这些行:
vim /usr/bin/cqlsh
然后,我尝试使用以下命令在six上安装最新的兼容版本:
yum install six
就是这样!问题解决了,现在我使用cqlsh没有任何问题。我希望它能帮助其他人。
6uxekuva2#
我们已经有报告说这是CentOS上的一个问题,特别是6.7版本,但它可能也会影响7.x版本。看起来调用了错误的Python。这不是严格意义上的Cassandra问题,而是机器上Python的问题。您可以验证运行的是哪个Python:
$ which python
作为一种解决方法,您应该能够使用系统Python运行cqlsh,如下所示:
$ /usr/local/bin/python /usr/bin/cqlsh
干杯干杯干杯
3j86kqsm3#
使用pip3安装或升级到当前的six。编辑cqlsh的副本。更改
pip3
third_parties = ('futures-', 'six-', 'geomet-')
至
third_parties = ('futures-', 'geomet-')
不是骄傲,但它的工作。
lc8prwob4#
使用pip3进行安装,也发现了此问题。对我来说,从/usr/lib/python3/dist-packages中删除六个依赖项是唯一有效的方法。rm six-1.11.0.egg-info和rm -r six-1.11.0.egg-info我不能卸载它与pip3,所以手动删除的方式去,其次是一个pip3 install six一旦恢复正常,cqlsh就可以正常运行了。
/usr/lib/python3/dist-packages
rm six-1.11.0.egg-info
rm -r six-1.11.0.egg-info
pip3 install six
4条答案
按热度按时间4dbbbstv1#
经过几个小时的谷歌搜索和与代码的斗争,终于,我找到了解决方案。我打算与其他人分享。
显然,问题出在
six
(v=1.7.3)的新版本上,它与我的系统不兼容。然而,Cassandra将six
的最新版本复制到以下路径:/usr/share/cassandra/lib/six-1.7.3-py2.py3-none-any.zip
那么
cqlsh
尝试通过在代码中添加以下行来强制python解释器从该路径导入库。无论您的系统上是否安装了其他版本的
six
,它总是尝试从Cassandra文件夹导入库。因此,我刚刚使用以下命令从
cqlsh
文件中删除了这些行:然后,我尝试使用以下命令在
six
上安装最新的兼容版本:就是这样!问题解决了,现在我使用
cqlsh
没有任何问题。我希望它能帮助其他人。6uxekuva2#
我们已经有报告说这是CentOS上的一个问题,特别是6.7版本,但它可能也会影响7.x版本。
看起来调用了错误的Python。这不是严格意义上的Cassandra问题,而是机器上Python的问题。您可以验证运行的是哪个Python:
作为一种解决方法,您应该能够使用系统Python运行
cqlsh
,如下所示:干杯干杯干杯
3j86kqsm3#
使用
pip3
安装或升级到当前的six
。编辑cqlsh的副本。更改
至
不是骄傲,但它的工作。
lc8prwob4#
使用
pip3
进行安装,也发现了此问题。对我来说,从
/usr/lib/python3/dist-packages
中删除六个依赖项是唯一有效的方法。rm six-1.11.0.egg-info
和rm -r six-1.11.0.egg-info
我不能卸载它与pip3,所以手动删除的方式去,其次是一个
pip3 install six
一旦恢复正常,cqlsh就可以正常运行了。