无法打开cqlsh Apache cassandra - ImportError:没有名为cqlshlib的模块

时间:2016-02-04 09:37:59

标签: cassandra

我是cassandra的新手!已经下载了apacahe cassandra 2.1.2包并且initialy能够连接到cqlsh但是在安装CCM之后我无法连接,会出现以下错误

Traceback (most recent call last):
File "bin/cqlsh", line 124, in <module>
from cqlshlib import cql3handling, cqlhandling, pylexotron,sslhandling, copy
ImportError: No module named cqlshlib

提前致谢!

9 个答案:

答案 0 :(得分:15)

花了几天时间,仔细研究移动重命名的复制软件包。

此错误最简单的解决方法:

pip install cqlsh

答案 1 :(得分:7)

您可以导出PYTHONPATH,以包含cqlshlib存在的站点包文件夹

首先找到cqlshlib存在的路径

find /usr/lib/ -name cqlshlib

使用以下变量名称

导出路径
export PYTHONPATH=/usr/lib/python2.7/site-packages/

答案 2 :(得分:3)

如果你在cassandra目录中,请运行:

bin/cqlsh

如果你检查了cqlsh,你正在使用which cqlsh运行,我怀疑你正在点击ccm,并且遗漏了路径中的某些内容。

答案 3 :(得分:3)

我已经尝试过他们的方式,但失败了。我认为prefix post 找不到cqlsh的确切路径;

我这样解决了:

  • Centos6.7,
  • datastax3.9,
  • 我的cqlshlib.so路径:cqlshlib

    vim /usr/bin/cqlsh.py

并在/usr/local/lib/python2.7/site-packages/之后添加cqlshlib的路径,文件如下:

import sys

然后我执行... import sys ... from uuid import UUID sys.path.append("/usr/local/lib/python2.7/site-packages") #add this sentence` ,它有效。

答案 4 :(得分:1)

我花了将近一天的时间来解决这个问题。原因是/usr/lib/python2.7/site-packages/和/usr/local/lib/python2.7/site-packages/(对于我的特定文件夹树)之间存在不匹配。

要使用的命令如下:

mv /usr/lib/python2.7/site-packages/* /usr/local/lib/python2.7/site-packages/
rmdir /usr/lib/python2.7/site-packages
ln -s /usr/local/lib/python2.7/site-packages /usr/lib/python2.7/site-packages

我猜你会找到2 / site-packages /。

仅供其他人参考。

答案 5 :(得分:1)

其他答案可以正确诊断问题。 您需要找到正确的cqlshlib。 我已将apt get的cassandra安装到Ubuntu,所以对我来说正确的路径是 /usr/local/apache-cassandra-3.11.3/pylib

我以前也做过pip install cqlsh,这使事情搞砸了,Apache团队不支持!

就像这里的另一个答案一样,我入侵了/usr/bin中的cqlsh.py文件

我成功的破解方法是用下面的行替换注释掉的行。

#cqlshlibdir = os.path.join(CASSANDRA_PATH, 'pylib')
cqlshlibdir = "/usr/local/apache-cassandra-3.11.3/pylib"

答案 6 :(得分:0)

解决方法:

我假设你已经安装了Cassandra并且已经在 /usr/lib/python2.7/site-packages /

中安装了cqlshlib
`ln -s /usr/lib/python2.7/site-packages/cqlshlib /usr/local/lib/python2.7/site-packages/cqlshlib` 

(将/usr/lib/python2.7/site-packages替换为您的python目录)。

更多细节:

一种可能性是您的默认python不在/usr/bin/中。假设它已安装在/usr/local/bin/中。但是,由于某些原因,Cassandra似乎在/usr/lib/python2.7/site-packages中安装了cqlshlib。因此,当您运行cqlsh命令时,默认的python无法找到cqlshlib包。

答案 7 :(得分:0)

只需使用root启动cqlsh,

  sudo cqlsh <ipaddress>

答案 8 :(得分:0)

由于 Cassandra 支持 python2,而您使用的是 python3,并且不想将两者混合使用,请遵循以下对我有用的技巧。

  1. 安装python2但不要将其添加到环境路径变量中
  2. 导航到 bin 文件夹并启动 Cassandra 服务器 .\cassandra -f
  3. 打开另一个终端并使用以下命令在 Cassandra 主目录中创建虚拟环境 virtualenv -p C:\Python27\python.exe .\venv
  4. 使用 cmd .\venv\Scripts\activate.ps1 激活虚拟环境
  5. 在虚拟环境中使用 cmd .\cqlsh.bat 启动 cqlsh