【问题标题】:SyntaxError: multiple statements found while compiling a single statementSyntaxError:编译单个语句时发现多个语句
【发布时间】:2014-02-09 04:45:29
【问题描述】:

我在 Python 3.3 中,我只输入这 3 行:

import sklearn as sk
import numpy as np
import matplotlib.pyplot as plt

我收到此错误:

SyntaxError: multiple statements found while compiling a single statement

我做错了什么?

编辑:如果有人遇到这个问题,我找到的解决方案是下载 Idlex 并使用它的 IDLE 版本,它允许多行。

截图:http://imgur.com/AJSrhhD

【问题讨论】:

  • 请提供完整的回溯。
  • 可能是空格问题。我不确定您使用的是 shell 还是脚本,但您是否尝试过创建新文件并重写?
  • 我正在使用 IDLE。没有显示引用错误。它只是说我在标题中发布的错误消息。我应该做些什么来找到它吗?我是个菜鸟,现在很明显。
  • @user3213857 你看我的回答了吗?
  • 张贴截图,然后。 应该比你得到的更多,截图可能是找出真正发生的事情的最简单方法。

标签: python syntax-error python-3.3


【解决方案1】:

您正在使用允许一次在线的交互式外壳。你可以做的是在每行之间放一个分号,就像这样 - import sklearn as sk;import numpy as np;import matplotlib.pyplot as plt。 或者您可以通过 control+n 创建一个新文件,您将在其中获得正常空闲。不要忘记在运行之前保存该文件。保存 - control+s。然后从上面的菜单栏运行它 - 运行 > 运行模块。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。这在 mac 上对我有用:

    echo "set enable-bracketed-paste off" >> ~/.inputrc
    

    【讨论】:

    • 对于 macOS,这是正确的答案。只需添加它并重新启动 python 控制台,它现在将接受粘贴多行。
    • 在 iterm 上对我不起作用
    • 有关更多详细信息,请参阅此自制问题:github.com/Homebrew/homebrew-core/issues/68193
    【解决方案3】:

    长期解决方案是只使用另一个 GUI 来运行 Python,例如Emacs 中的 IDLE 或 M-x run-python

    【讨论】:

      【解决方案4】:

      一个(部分)实际的解决方法是将事物放入一个可丢弃的函数中。

      粘贴

      x = 1
      x += 1
      print(x)
      

      结果

      >>> x = 1
      x += 1
      print(x)
        File "<stdin>", line 1
          x += 1
      print(x)
      
          ^
      SyntaxError: multiple statements found while compiling a single statement
      >>>
      

      但是,粘贴

      def abc():
        x = 1
        x += 1
        print(x)
      

      作品:

      >>> def abc():
        x = 1
        x += 1
        print(x)
      >>> abc()
      2
      >>>
      

      当然,这对于快速一次性来说是可以的,但不适用于您可能想做的所有事情等。但是,转到ipython / jupyter qtconsole 可能是下一个最简单的选择。

      【讨论】:

        【解决方案5】:

        在shell中,一次不能执行多个语句:

        >>> x = 5
        y = 6
        SyntaxError: multiple statements found while compiling a single statement
        

        你需要一一执行:

        >>> x = 5
        >>> y = 6
        >>>
        

        当您看到正在声明多个语句时,这意味着您正在看到一个脚本,该脚本将在稍后执行。但是在交互式解释器中,您一次只能执行一个语句。

        【讨论】:

        • 这不是真的,您只需粘贴x=6 \n x=6 就可以了。没有完整的追溯是不可能的,我认为实际的答案更倾向于jmu的
        • @GamesBrainiac Hum.. 真的吗?我粘贴了你的 sn-p,我得到了 SyntaxError: unexpected character after line continuation character..
        • 我将他的代码粘贴到控制台,没有任何错误。
        • @Games 你在用什么?我粘贴了它,我得到的错误与我的答案完全相同。
        • 我相信 GB 的意思是 \n 在实际的换行符中。 aIKid,您是在粘贴文字反斜杠和 n 吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-30
        • 1970-01-01
        • 2016-06-03
        • 1970-01-01
        相关资源
        最近更新 更多