2016-02-24 18 views
14

provo ad eseguire i seguenti codici sulla Spyder (Python 2.7.11):% magica linea matplotlib provoca SyntaxError nello script Python

# -*- coding: utf-8 -*- 

import numpy as np 
import pandas as pd 

%matplotlib inline 

import matplotlib.pyplot as plt 
import matplotlib.cm as cm 

import tensorflow as tf 

# settings 
LEARNING_RATE = 1e-4 
# set to 20000 on local environment to get 0.99 accuracy 
TRAINING_ITERATIONS = 2000   

DROPOUT = 0.5 
BATCH_SIZE = 50 

# set to 0 to train on all available data 
VALIDATION_SIZE = 2000 

# image number to output 
IMAGE_TO_DISPLAY = 10 

ma ho ottenuto questo errore:

line 10 
    %matplotlib inline 
    ^
SyntaxError: invalid syntax. 

Apprezzo se qualcuno mi dà una spiegazione

P.S. il codice proviene dal progetto di concorrenza di Kaggle: Digit Recognizer

+0

Avete mai installato altre distribuzioni scientifiche? https://github.com/ContinuumIO/anaconda-issues/issues/264 – GLaDOS

+0

Sto usando Anaconda per Python 2.7.11, installato panda, nump, scipy, matplotlib, scikit-learn 0.17. .... – John

+0

anche theano 0.8.0.dev0 – John

risposta

0

Ci sono diversi motivi per cui questo non avrebbe funzionato.

È possibile che matplotlib non sia installato correttamente. hai provato in esecuzione:

conda install matplotlib 

Se questo non funziona, guardate la vostra variabile d'ambiente% PATH%, cosa contiene le librerie ei percorsi pitone?

Similar problem on github anaconda

+0

Grazie per le vostre informazioni, ho eseguito "conda install matplotlib" e ottenuto alcuni aggiornamenti. Ma è sempre lo stesso. – John

+0

Cosa intendi? quali aggiornamenti? – GLaDOS

3

La sintassi '%' in %matplotlib inline è riconosciuto da ipython (dove è configurato per gestire i metodi magici), ma non lo stesso Python, che dà uno SyntaxError. Here is given one solution.

+0

Ho pensato che questo era il problema fino a quando non ho realizzato che Spyder è correlato a ipython, quindi di nuovo questo potrebbe essere il problema. – GLaDOS

+0

Oops. Sorprendentemente, ci sono molti problemi con matplotlib in Spyder. – Silvia07

+0

Grazie per la risposta. Tuttavia, anche io eseguo lo script sulla console iPython, mi dà comunque lo stesso errore. – John

22

Le magie di linea sono supportate solo dalla riga di comando IPython. Non è possibile utilizzarlo all'interno di uno script come questo perché non è corretta la sintassi Python.

Se si desidera eseguire questa operazione da uno script, è necessario accedere all'API IPython e quindi chiamare la funzione run_line_magic.

Invece di %matplotlib inline, si dovrà fare qualcosa di simile nello script:

from IPython import get_ipython 
get_ipython().run_line_magic('matplotlib', 'inline') 

Un approccio simile è descritto in this answer, ma utilizza la funzione deprecata magic.

Si noti che lo script deve ancora essere eseguito in IPython. Sotto Python vaniglia la funzione get_ipython restituisce None e get_ipython().run_line_magic genererà un AttributeError.

+0

Grazie per il suggerimento. Ho provato il tuo approccio, e ho ottenuto un altro errore: ImportError: nessun modulo denominato move (perché iPython sta eseguendo il codice "da six.moves import zip, reduce"), sto cercando di scoprire perché questo accade. – John

+4

Grazie per il tuo suggerimento, ma ho ricevuto questo errore 'AttributeError: 'NoneType' l'oggetto non ha attributo 'run_line_magic'', Puoi aiutare Grazie –

+0

@Always_Beginner sembra che tu stia usando una normale shell Python, nel qual caso' get_ipython() 'restituisce' None'. Le magie di linea sono supportate solo in IPython. – kazemakase

Problemi correlati