我已经安装了Cassandra
我的 CentOs 系统上的数据库。之后,我尝试使用此命令安装 Cqlsh 包 sudo yum install cqlsh
并且已经安装成功。但是当我尝试运行 cqlsh
从终端,出现以下错误:
ImportError: cannot import name ensure_str
在代码的某处,它尝试加载一个名为
six
的库。包含 ensure_str
.该错误并不是说它找不到名为 six
的模块,python解释器能找到库但不能导入!我试过谷歌搜索,但没有一个解决方案对我有用。
最佳答案
经过几个小时的谷歌搜索和代码的挣扎,我终于找到了解决方案。我将与其他人分享。
显然,问题出在 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
没有任何问题。我希望它可以帮助其他人。
关于python - CQLSH 导入错误 : cannot import name ensure_str,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68692044/