python - CQLSH 导入错误 : cannot import name ensure_str

标签 python cassandra centos cqlsh

我已经安装了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/

相关文章:

python - 在 2 级列表中形成所有可能的字符串

java - Cassandra Java 驱动程序 3 EnumNameCodec

cassandra - 应用程序容器到 cassandra 节点 - 一对一还是?

apache - 配置虚拟主机以部署 Rails 应用程序

php - pecl_http 加载失败

python - 为什么这不会使用 python 插入到我的数据库中?

python - 根据行出现选择数据框结果

python - win7上python3.2和pyodbc在SQL Server 2008 R2上建表出错

python - Cassandra 有时会抛出未经授权的错误

centos - PureFTPD Kloxo 错误