I'm in Python 3.3 and I'm only entering these 3 lines:
import sklearn as sk import numpy as np import matplotlib.pyplot as plt I'm getting this error:
SyntaxError: multiple statements found while compiling a single statement What could I be doing wrong?
Edit: If anyone comes across this question, the solution I found was to download Idlex and use its IDLE version, which allows multiple lines.
65 Answers
I had the same problem. This worked for me on mac:
echo "set enable-bracketed-paste off" >> ~/.inputrc 3In the shell, you can't execute more than one statement at a time:
>>> x = 5 y = 6 SyntaxError: multiple statements found while compiling a single statement You need to execute them one by one:
>>> x = 5 >>> y = 6 >>> When you see multiple statements are being declared, that means you're seeing a script, which will be executed later. But in the interactive interpreter, you can't do more than one statement at a time.
11A (partial) practical work-around is to put things into a throw-away function.
Pasting
x = 1 x += 1 print(x) results in
>>> x = 1 x += 1 print(x) File "<stdin>", line 1 x += 1 print(x) ^ SyntaxError: multiple statements found while compiling a single statement >>> However, pasting
def abc(): x = 1 x += 1 print(x) works:
>>> def abc(): x = 1 x += 1 print(x) >>> abc() 2 >>> Of course, this is OK for a quick one-off, won't work for everything you might want to do, etc. But then, going to ipython / jupyter qtconsole is probably the next simplest option.
Long-term solution is to just use another GUI for running Python e.g. IDLE or M-x run-python in Emacs.
You are using the interactive shell which allows on line at a time. What you can do is put a semi-colon between every line, like this - import sklearn as sk;import numpy as np;import matplotlib.pyplot as plt. Or you can create a new file by control+n where you will get the normal idle. Don't forget to save that file before running. To save - control+s. And then run it from the above menu bar - run > run module.