Cassandra: "cqlsh"第145行,除了ImportError之外,还有e:^语法错误:无效的语法。

15

我在Windows 10上安装了Cassandra 3.11.1版本,使用jdk 1.8.0_151和python 3.6。环境变量中提供了所有路径。 当我在命令提示符中运行cqlsh时,出现以下错误:

File "C:\Cassandra\bin\\cqlsh.py", line 145
    except ImportError, e:
                      ^
SyntaxError: invalid syntax

有没有人,对上述错误有什么解决办法?


重复的问题,在这里已经有答案了 https://dev59.com/lmIk5IYBdhLWcg3wkvBn - Prabhakar
12个回答

8

我遇到了同样的问题。我将Python降级至2.7,问题得以解决。

错误信息:

cqlsh.py",第146行 except ImportError, e: ^ SyntaxError:语法无效


代码(至少在Cassandra 3.11.7之前)是为Python 2.x编写的,降级到Python 2.7而不是修复语法可能更明智。如果您尝试使用Python 3.x使cqlsh工作,则不仅需要修复cqlsh.py的第146行,还有更多内容需要修复(我尝试过3.8)。 - KGhatak
我也遇到了同样的问题,安装了Python 2.7之后问题得到了解决 :) - Madhusudan

3

这是否意味着cqlsh无法在Python 3.5或Python 3.6上运行? - Vaibhav Gupta
1
目前仅支持Python 2。上述Jira问题是为提供Python 3支持。 - kermatt
我更新了 cqlsh,但现在出现以下新错误: "'\n 警告:指定的 cqlshrc 位置 %s 不存在。改用 %s。\n'%(CONFIG_FILE,HISTORY_DIR)^ SyntaxError:无效语法" - Vaibhav Gupta
2
对于仅支持Python 2.7的cqlsh版本5.0.1,解决方案是将cqlsh文件头从“#!/usr/bin/python3”更改为“#!/usr/bin/python”。 - heroin

1

我已经修改了我的cqlsh.py文件,但现在我遇到了新的错误: print '\n警告:指定的cqlshrc位置 %s 不存在。 使用 %s 替代。\n' %(CONFIG_FILE,HISTORY_DIR) ^ SyntaxError:无效语法 - Vaibhav Gupta
参考@kermatt的答案,这并不能解决问题,因为目前cqlsh软件包仅支持Python2。即使您修复了这一行,还会出现其他错误和警告。 - Osama Dar

1
我的情况: 我需要安装Apache cassandra。我已经在D盘上安装了Python3。由于在Python 3上有大量的开发工作正在进行中,我不想弄乱我的Python 3安装。而且,我只需要Python2来运行Apache cassandra。

你来到这里是为了寻找答案:

  • 我假设你已经安装了所有Apache cassandra的先决条件,除了Python2
  • 你没有安装Python2,因为你已经在系统上运行Python3
  • 当你尝试运行时,你会收到错误信息。
  • 你不想安装Python2,因为你不想搞乱已经安装的Python3。

好吧,我也遇到了同样的问题。现在,请查看我的回答。

https://dev59.com/nnRC5IYBdhLWcg3wUfJ2#58285774

建议:

  1. 不要像上面建议的那样在cqlsh.py中尝试使用except ImportError as e:。你将会陷入无数错误和警告的循环中。只需按照链接中提到的步骤安装Python2即可。

1
由于您的Cassandra正在引用安装在系统上的Python 3,所以出现了这个问题。要解决此问题,请执行以下操作:
  1. 在您的系统上安装Python 2。
  2. 将python2添加到您的环境变量中。
  3. 导航到您的Cassandra bin文件夹,例如 C:\Cassandra\apache-cassandra-3.11.9\bin>
  4. py -2 -V (验证是否已安装Python 2)
  5. py -2 -m cqlsh(从您的Cassandra bin文件夹运行)

0
你可以在安装python3的同时安装python2,并将bin文件夹中的cqlsh.bat文件从python更改为python2,方法如下:
@echo off

if "%OS%" == "Windows_NT" setlocal

python2 -V >nul 2>&1
if ERRORLEVEL 1 goto err

python2 "%~dp0\cqlsh.py" %*
goto finally

:err
echo Can't detect Python version!

:finally

ENDLOCAL

注意:要安装Python3和Python2,您可以将两者都添加到路径中,并将文件夹python2中的python.exe更改为python2.exe。

1
太好了,它能正常工作。但是不知道改变可执行文件的名称是否是良好的实践。 - Perry
只需安装Python 2.7并将其添加到路径中即可。这对我很有效! - Jane Kathambi

0

只需安装Python 2.7并将其添加到路径中即可。这对我有用!从此处下载Python 2.7 Python官方下载页面

将Python 2.7的位置添加到环境变量设置环境变量 下一步 最后


0
最好在批处理/ shell 文件“cqlsh”中硬编码路径。或者像我在下面的代码中所做的那样,将目录更改为Python2安装目录。
if "%OS%" == "Windows_NT" setlocal

cd C:\Python27
python -V >nul 2>&1
if ERRORLEVEL 1 goto err

0

如果您有不同版本的Python,我建议您这样做:

  • 使用以下命令安装cqlsh:

    python2.7 -m pip install cqlsh

这将在您的Python2.7环境中安装cqlsh。

  • 同样,您可能需要以相同的方式安装cassandra-driver:

    python2.7 -m pip install cassandra-driver


-1

我遇到了和你一样的问题。 我按照 Prerequisites 中提到的安装了Python 2.7版本,然后错误就不再出现了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接