【问题标题】:Cassandra: "cqlsh" line 145 except ImportError, e: ^ SyntaxError: invalid syntaxCassandra:“cqlsh”第 145 行,除了 ImportError,e:^ SyntaxError:无效语法
【发布时间】:2018-06-21 12:07:38
【问题描述】:

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

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

任何人,上面的错误有什么运气吗?

【问题讨论】:

标签: python-3.6 cassandra-3.0


【解决方案1】:

参考:https://docs.python.org/3.6/tutorial/errors.html

错误是正确的,因为您的语法错误。应该是:

except ImportError as e:

【讨论】:

  • 我已经修改了我的 cqlsh.py 文件,但现在我收到了一个新错误:print '\nWarning: Specified cqlshrc location %s does not exist。改用%s。\n' % (CONFIG_FILE, HISTORY_DIR) ^ SyntaxError: invalid syntax
  • 参考@kermatt 的回答,这并不能解决问题,因为cqlsh 包目前只支持Python2。如果您修复此行,将会出现其他错误和警告。
【解决方案2】:

cqlsh 需要 Python 2 解释器。见https://issues.apache.org/jira/browse/CASSANDRA-10190

【讨论】:

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

我遇到了同样的问题。我将 python 降级到 2.7,它对我有用。

错误:

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

【讨论】:

  • 代码(至少在 Cassandra 3.11.7 之前)是为 Python 2.x 编写的,最好降级到 Python 2.7 而不是修复语法。如果您冒险使 cqlsh 与 python 3.x 一起工作(我尝试了 3.8),那么需要修复的不仅仅是 cqlsh.py 的第 146 行。
  • 我也有同样的问题,安装 Python 2.7 后问题已修复 :)
【解决方案4】:

我和你有同样的问题。 我已经安装了Prerequisites 中提到的python 2.7 版本,并且不再出现错误

【讨论】:

    【解决方案5】:

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

    你来这里是为了寻找答案,所以:

    • 我假设您已为 Apache cassandra 安装了所有先决条件,Python2 除外。
    • 您没有安装 Python2,因为您的系统上已经启动并运行了 Python3
    • 当您尝试运行 cqlsh 时遇到错误
    • 您不想安装 Python2,因为您不想弄乱已安装的 Python3 中/上的任何内容。

    我也有同样的问题。现在,在下面查看我的答案。

    https://stackoverflow.com/a/58285774/1513779

    建议:

    1. 不要按照上面的建议在 cqlsh.py 中尝试 except ImportError as e:。您将陷入大量错误和警告的循环中。只需按照链接中提到的步骤安装 Python2。

    【讨论】:

      【解决方案6】:

      首先安装python 2.7 在 PATH 键中设置系统变量 C:\Python27 中的路径

      【讨论】:

        【解决方案7】:

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

        • 使用安装 cqlsh

          python2.7 -m pip install cqlsh

        这将在你的 Python2.7 的上下文中安装 cqlsh

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

          python2.7 -m pip install cassandra-driver

        【讨论】:

          【解决方案8】:

          如果您安装了 Cassandra 4.0,请使用 sudo cqlsh。它可以正常工作

          【讨论】:

          • 不过,这并不能真正回答所提出的问题,该问题是在 Cassandra 4.0 发布之前创建的。另外,cqlsh 会话不需要 sudo
          【解决方案9】:

          原因是您的 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 文件夹。)

          【讨论】:

            【解决方案10】:

            你可以在安装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

            【讨论】:

              【解决方案11】:

              最好在批处理/shell 文件“cqlsh”中硬编码 PATH。或者将目录更改为 Python2 的安装目录,就像我在下面的代码中所做的那样。

              if "%OS%" == "Windows_NT" setlocal
              
              cd C:\Python27
              python -V >nul 2>&1
              if ERRORLEVEL 1 goto err
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2014-06-29
                • 1970-01-01
                • 2015-12-22
                • 2022-08-16
                • 2015-09-08
                • 1970-01-01
                • 2016-05-13
                相关资源
                最近更新 更多